{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 程序复现"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import torch\n",
    "import torchvision\n",
    "import matplotlib.pyplot as plt\n",
    "import torch.nn as nn\n",
    "import torch.nn.functional as F\n",
    "import torch.optim as optim"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<torch._C.Generator at 0x1b720d14990>"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "n_epochs = 3\n",
    "batch_size_train = 64\n",
    "batch_size_test = 1000\n",
    "learning_rate = 0.01\n",
    "momentum = 0.5\n",
    "log_interval = 10\n",
    "random_seed = 1\n",
    "torch.backends.cudnn.enabled = False\n",
    "torch.manual_seed(random_seed)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "train_loader = torch.utils.data.DataLoader(\n",
    "  torchvision.datasets.MNIST('/files/', train=True, download=True,\n",
    "                             transform=torchvision.transforms.Compose([\n",
    "                               torchvision.transforms.ToTensor(),\n",
    "                               torchvision.transforms.Normalize(\n",
    "                                 (0.1307,), (0.3081,))\n",
    "                             ])),\n",
    "  batch_size=batch_size_train, shuffle=True)\n",
    "test_loader = torch.utils.data.DataLoader(\n",
    "  torchvision.datasets.MNIST('/files/', train=False, download=True,\n",
    "                             transform=torchvision.transforms.Compose([\n",
    "                               torchvision.transforms.ToTensor(),\n",
    "                               torchvision.transforms.Normalize(\n",
    "                                 (0.1307,), (0.3081,))\n",
    "                             ])),\n",
    "  batch_size=batch_size_test, shuffle=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "examples = enumerate(test_loader)\n",
    "batch_idx, (example_data, example_targets) = next(examples)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "torch.Size([1000, 1, 28, 28])"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "example_data.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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/BkRkAuXL18WJUuWFL6EvILuyCs4qWLFisr4okWLlPGWLVuKQMwrZswAAAA0QWEGAACgCQozAAAATVCYAQAAaILCDAAAQBPar5UJAAB836lTpwKq+zK3mDEDAADQBIUZAACAJijMAAAANEFhBgAAoAkKMwAAAE1QmAEAAGiCwgwAAEATFGYAAACaoDADAADQBIUZAACALxVmhmF4fiRAHvjiMeqLY0Zg8cVj1BfHjMBi5HCMulWYpaamOjUewCN88Rj1xTEjsPjiMeqLY0ZgyekYDTLceHuRnp4ukpKSRGhoqAgKCnJyfECeyMNXHuSRkZEiONi3Ppknr6Ar8grwXl65VZgBAADA83zrrRAAAIAfozADAADQBIUZAACAJijMAAAANEFhBgAAoAkKMwAAAE1QmAEAAGiCwgwAAEATFGYAAACaoDADAADQBIUZAACAJijMAAAANEFhBgAAoAkKMwAAAE1QmAEAAGiCwgwAAEATFGYAAACaoDADAADQBIUZAACAJijMAAAANEFh5kFBQUHi5ZdfFjrr16+fKFGihLeHAbiFnAKcR17pxeuF2YkTJ8TQoUNFtWrVRLFixcyvBx98UDz33HNi//79wp+1bNnSTIicvvKaMGlpaeY+vv76a5Ffrl69KoYPHy7Kly8vihQpImrUqCHmzJmTb/cfyMgpcgrOI6/8M6+ktWvXinr16omiRYuKChUqiAkTJohbt24JbynotXsWQnz++eeiW7duomDBgqJXr16iTp06Ijg4WBw5ckSsXLnS/KUjk6FixYrCH40bN048++yzd77ftWuXeOutt8RLL71k/tJ1qV27dp4P9ldeeeVOgnna7du3RevWrcXu3bvNX1pVq1YVGzduFEOGDBEXL140Hx88g5wip+A88so/80pav3696Nixo3l/b7/9tjhw4ICYOHGiOH/+vPfe+BhecuzYMaN48eJGjRo1jKSkpGy337x503jzzTeN06dP33U/V69eNXQln94JEya4vf3y5cvNn9myZYujjzk5OdlyLH379jVfByctW7bMvL/3338/U7xLly5G0aJFjXPnzjl6f/g/5FR25BTyirzy37ySHnzwQaNOnTrm6+gybtw4IygoyPjpp58Mb/DaR5lTpkwR165dEwsWLBDlypXLdrt8ZzJs2DARFRWV7TPm48ePi7Zt24rQ0FDz3Ysk9xUX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",
      "text/plain": [
       "<Figure size 640x480 with 6 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig = plt.figure()\n",
    "for i in range(6):\n",
    "  plt.subplot(2,3,i+1)\n",
    "  plt.tight_layout()\n",
    "  plt.imshow(example_data[i][0], cmap='gray', interpolation='none')\n",
    "  plt.title(\"Ground Truth: {}\".format(example_targets[i]))\n",
    "  plt.xticks([])\n",
    "  plt.yticks([])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "class Net(nn.Module):\n",
    "    def __init__(self):\n",
    "        super(Net, self).__init__()\n",
    "        self.conv1 = nn.Conv2d(1, 10, kernel_size=5)\n",
    "        self.conv2 = nn.Conv2d(10, 20, kernel_size=5)\n",
    "        self.conv2_drop = nn.Dropout2d()\n",
    "        self.fc1 = nn.Linear(320, 50)\n",
    "        self.fc2 = nn.Linear(50, 10)\n",
    "\n",
    "    def forward(self, x):\n",
    "        x = F.relu(F.max_pool2d(self.conv1(x), 2))\n",
    "        x = F.relu(F.max_pool2d(self.conv2_drop(self.conv2(x)), 2))\n",
    "        x = x.view(-1, 320)\n",
    "        x = F.relu(self.fc1(x))\n",
    "        x = F.dropout(x, training=self.training)\n",
    "        x = self.fc2(x)\n",
    "        return F.log_softmax(x)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "network = Net()\n",
    "optimizer = optim.SGD(network.parameters(), lr=learning_rate,\n",
    "                      momentum=momentum)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "train_losses = []\n",
    "train_counter = []\n",
    "test_losses = []\n",
    "test_counter = [i*len(train_loader.dataset) for i in range(n_epochs + 1)]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "def train(epoch):\n",
    "  network.train()\n",
    "  for batch_idx, (data, target) in enumerate(train_loader):\n",
    "    optimizer.zero_grad()\n",
    "    output = network(data)\n",
    "    loss = F.nll_loss(output, target)\n",
    "    loss.backward()\n",
    "    optimizer.step()\n",
    "    if batch_idx % log_interval == 0:\n",
    "      print('Train Epoch: {} [{}/{} ({:.0f}%)]\\tLoss: {:.6f}'.format(\n",
    "        epoch, batch_idx * len(data), len(train_loader.dataset),\n",
    "        100. * batch_idx / len(train_loader), loss.item()))\n",
    "      train_losses.append(loss.item())\n",
    "      train_counter.append(\n",
    "        (batch_idx*64) + ((epoch-1)*len(train_loader.dataset)))\n",
    "      torch.save(network.state_dict(), '/homework/model.pth')\n",
    "      torch.save(optimizer.state_dict(), '/homework/optimizer.pth')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "def test():\n",
    "  network.eval()\n",
    "  test_loss = 0\n",
    "  correct = 0\n",
    "  with torch.no_grad():\n",
    "    for data, target in test_loader:\n",
    "      output = network(data)\n",
    "      test_loss += F.nll_loss(output, target, size_average=False).item()\n",
    "      pred = output.data.max(1, keepdim=True)[1]\n",
    "      correct += pred.eq(target.data.view_as(pred)).sum()\n",
    "  test_loss /= len(test_loader.dataset)\n",
    "  test_losses.append(test_loss)\n",
    "  print('\\nTest set: Avg. loss: {:.4f}, Accuracy: {}/{} ({:.0f}%)\\n'.format(\n",
    "    test_loss, correct, len(test_loader.dataset),\n",
    "    100. * correct / len(test_loader.dataset)))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\xia0jaying\\AppData\\Local\\Temp\\ipykernel_22392\\161431047.py:17: UserWarning: Implicit dimension choice for log_softmax has been deprecated. Change the call to include dim=X as an argument.\n",
      "  return F.log_softmax(x)\n",
      "d:\\anaconda\\envs\\pytorch\\Lib\\site-packages\\torch\\nn\\_reduction.py:51: UserWarning: size_average and reduce args will be deprecated, please use reduction='sum' instead.\n",
      "  warnings.warn(warning.format(ret))\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "Test set: Avg. loss: 2.3096, Accuracy: 924/10000 (9%)\n",
      "\n",
      "Train Epoch: 1 [0/60000 (0%)]\tLoss: 2.313179\n",
      "Train Epoch: 1 [640/60000 (1%)]\tLoss: 2.300776\n",
      "Train Epoch: 1 [1280/60000 (2%)]\tLoss: 2.298872\n",
      "Train Epoch: 1 [1920/60000 (3%)]\tLoss: 2.276723\n",
      "Train Epoch: 1 [2560/60000 (4%)]\tLoss: 2.241102\n",
      "Train Epoch: 1 [3200/60000 (5%)]\tLoss: 2.248662\n",
      "Train Epoch: 1 [3840/60000 (6%)]\tLoss: 2.189547\n",
      "Train Epoch: 1 [4480/60000 (7%)]\tLoss: 2.146399\n",
      "Train Epoch: 1 [5120/60000 (9%)]\tLoss: 2.107701\n",
      "Train Epoch: 1 [5760/60000 (10%)]\tLoss: 2.011356\n",
      "Train Epoch: 1 [6400/60000 (11%)]\tLoss: 1.843857\n",
      "Train Epoch: 1 [7040/60000 (12%)]\tLoss: 1.758839\n",
      "Train Epoch: 1 [7680/60000 (13%)]\tLoss: 1.672644\n",
      "Train Epoch: 1 [8320/60000 (14%)]\tLoss: 1.687645\n",
      "Train Epoch: 1 [8960/60000 (15%)]\tLoss: 1.426628\n",
      "Train Epoch: 1 [9600/60000 (16%)]\tLoss: 1.284204\n",
      "Train Epoch: 1 [10240/60000 (17%)]\tLoss: 1.318824\n",
      "Train Epoch: 1 [10880/60000 (18%)]\tLoss: 1.445287\n",
      "Train Epoch: 1 [11520/60000 (19%)]\tLoss: 1.140658\n",
      "Train Epoch: 1 [12160/60000 (20%)]\tLoss: 1.152956\n",
      "Train Epoch: 1 [12800/60000 (21%)]\tLoss: 1.053577\n",
      "Train Epoch: 1 [13440/60000 (22%)]\tLoss: 0.899838\n",
      "Train Epoch: 1 [14080/60000 (23%)]\tLoss: 1.192381\n",
      "Train Epoch: 1 [14720/60000 (25%)]\tLoss: 0.947140\n",
      "Train Epoch: 1 [15360/60000 (26%)]\tLoss: 0.874856\n",
      "Train Epoch: 1 [16000/60000 (27%)]\tLoss: 0.848544\n",
      "Train Epoch: 1 [16640/60000 (28%)]\tLoss: 0.771893\n",
      "Train Epoch: 1 [17280/60000 (29%)]\tLoss: 0.764048\n",
      "Train Epoch: 1 [17920/60000 (30%)]\tLoss: 0.805497\n",
      "Train Epoch: 1 [18560/60000 (31%)]\tLoss: 0.891861\n",
      "Train Epoch: 1 [19200/60000 (32%)]\tLoss: 0.795640\n",
      "Train Epoch: 1 [19840/60000 (33%)]\tLoss: 0.910627\n",
      "Train Epoch: 1 [20480/60000 (34%)]\tLoss: 0.582403\n",
      "Train Epoch: 1 [21120/60000 (35%)]\tLoss: 0.694939\n",
      "Train Epoch: 1 [21760/60000 (36%)]\tLoss: 0.619524\n",
      "Train Epoch: 1 [22400/60000 (37%)]\tLoss: 0.766233\n",
      "Train Epoch: 1 [23040/60000 (38%)]\tLoss: 0.715024\n",
      "Train Epoch: 1 [23680/60000 (39%)]\tLoss: 0.632636\n",
      "Train Epoch: 1 [24320/60000 (41%)]\tLoss: 0.665659\n",
      "Train Epoch: 1 [24960/60000 (42%)]\tLoss: 0.840592\n",
      "Train Epoch: 1 [25600/60000 (43%)]\tLoss: 0.855430\n",
      "Train Epoch: 1 [26240/60000 (44%)]\tLoss: 0.620044\n",
      "Train Epoch: 1 [26880/60000 (45%)]\tLoss: 0.630453\n",
      "Train Epoch: 1 [27520/60000 (46%)]\tLoss: 0.687899\n",
      "Train Epoch: 1 [28160/60000 (47%)]\tLoss: 0.587980\n",
      "Train Epoch: 1 [28800/60000 (48%)]\tLoss: 0.547443\n",
      "Train Epoch: 1 [29440/60000 (49%)]\tLoss: 0.833101\n",
      "Train Epoch: 1 [30080/60000 (50%)]\tLoss: 0.739253\n",
      "Train Epoch: 1 [30720/60000 (51%)]\tLoss: 0.633102\n",
      "Train Epoch: 1 [31360/60000 (52%)]\tLoss: 0.645753\n",
      "Train Epoch: 1 [32000/60000 (53%)]\tLoss: 0.711187\n",
      "Train Epoch: 1 [32640/60000 (54%)]\tLoss: 0.443457\n",
      "Train Epoch: 1 [33280/60000 (55%)]\tLoss: 0.588979\n",
      "Train Epoch: 1 [33920/60000 (57%)]\tLoss: 0.576426\n",
      "Train Epoch: 1 [34560/60000 (58%)]\tLoss: 0.661740\n",
      "Train Epoch: 1 [35200/60000 (59%)]\tLoss: 0.568467\n",
      "Train Epoch: 1 [35840/60000 (60%)]\tLoss: 0.562746\n",
      "Train Epoch: 1 [36480/60000 (61%)]\tLoss: 0.625155\n",
      "Train Epoch: 1 [37120/60000 (62%)]\tLoss: 0.799745\n",
      "Train Epoch: 1 [37760/60000 (63%)]\tLoss: 0.572310\n",
      "Train Epoch: 1 [38400/60000 (64%)]\tLoss: 0.627214\n",
      "Train Epoch: 1 [39040/60000 (65%)]\tLoss: 0.538816\n",
      "Train Epoch: 1 [39680/60000 (66%)]\tLoss: 0.620211\n",
      "Train Epoch: 1 [40320/60000 (67%)]\tLoss: 0.319990\n",
      "Train Epoch: 1 [40960/60000 (68%)]\tLoss: 0.331809\n",
      "Train Epoch: 1 [41600/60000 (69%)]\tLoss: 0.374664\n",
      "Train Epoch: 1 [42240/60000 (70%)]\tLoss: 0.298212\n",
      "Train Epoch: 1 [42880/60000 (71%)]\tLoss: 0.413167\n",
      "Train Epoch: 1 [43520/60000 (72%)]\tLoss: 0.431942\n",
      "Train Epoch: 1 [44160/60000 (74%)]\tLoss: 0.449397\n",
      "Train Epoch: 1 [44800/60000 (75%)]\tLoss: 0.612280\n",
      "Train Epoch: 1 [45440/60000 (76%)]\tLoss: 0.526616\n",
      "Train Epoch: 1 [46080/60000 (77%)]\tLoss: 0.516427\n",
      "Train Epoch: 1 [46720/60000 (78%)]\tLoss: 0.384898\n",
      "Train Epoch: 1 [47360/60000 (79%)]\tLoss: 0.493991\n",
      "Train Epoch: 1 [48000/60000 (80%)]\tLoss: 0.564570\n",
      "Train Epoch: 1 [48640/60000 (81%)]\tLoss: 0.412000\n",
      "Train Epoch: 1 [49280/60000 (82%)]\tLoss: 0.389109\n",
      "Train Epoch: 1 [49920/60000 (83%)]\tLoss: 0.531579\n",
      "Train Epoch: 1 [50560/60000 (84%)]\tLoss: 0.432618\n",
      "Train Epoch: 1 [51200/60000 (85%)]\tLoss: 0.680821\n",
      "Train Epoch: 1 [51840/60000 (86%)]\tLoss: 0.500604\n",
      "Train Epoch: 1 [52480/60000 (87%)]\tLoss: 0.682386\n",
      "Train Epoch: 1 [53120/60000 (88%)]\tLoss: 0.535151\n",
      "Train Epoch: 1 [53760/60000 (90%)]\tLoss: 0.555157\n",
      "Train Epoch: 1 [54400/60000 (91%)]\tLoss: 0.634537\n",
      "Train Epoch: 1 [55040/60000 (92%)]\tLoss: 0.436544\n",
      "Train Epoch: 1 [55680/60000 (93%)]\tLoss: 0.554205\n",
      "Train Epoch: 1 [56320/60000 (94%)]\tLoss: 0.548219\n",
      "Train Epoch: 1 [56960/60000 (95%)]\tLoss: 0.352735\n",
      "Train Epoch: 1 [57600/60000 (96%)]\tLoss: 0.315337\n",
      "Train Epoch: 1 [58240/60000 (97%)]\tLoss: 0.298950\n",
      "Train Epoch: 1 [58880/60000 (98%)]\tLoss: 0.718047\n",
      "Train Epoch: 1 [59520/60000 (99%)]\tLoss: 0.381131\n",
      "\n",
      "Test set: Avg. loss: 0.1862, Accuracy: 9438/10000 (94%)\n",
      "\n",
      "Train Epoch: 2 [0/60000 (0%)]\tLoss: 0.441820\n",
      "Train Epoch: 2 [640/60000 (1%)]\tLoss: 0.445751\n",
      "Train Epoch: 2 [1280/60000 (2%)]\tLoss: 0.497643\n",
      "Train Epoch: 2 [1920/60000 (3%)]\tLoss: 0.521104\n",
      "Train Epoch: 2 [2560/60000 (4%)]\tLoss: 0.297992\n",
      "Train Epoch: 2 [3200/60000 (5%)]\tLoss: 0.168331\n",
      "Train Epoch: 2 [3840/60000 (6%)]\tLoss: 0.487881\n",
      "Train Epoch: 2 [4480/60000 (7%)]\tLoss: 0.408700\n",
      "Train Epoch: 2 [5120/60000 (9%)]\tLoss: 0.381626\n",
      "Train Epoch: 2 [5760/60000 (10%)]\tLoss: 0.643890\n",
      "Train Epoch: 2 [6400/60000 (11%)]\tLoss: 0.570228\n",
      "Train Epoch: 2 [7040/60000 (12%)]\tLoss: 0.315255\n",
      "Train Epoch: 2 [7680/60000 (13%)]\tLoss: 0.447268\n",
      "Train Epoch: 2 [8320/60000 (14%)]\tLoss: 0.630468\n",
      "Train Epoch: 2 [8960/60000 (15%)]\tLoss: 0.488714\n",
      "Train Epoch: 2 [9600/60000 (16%)]\tLoss: 0.448124\n",
      "Train Epoch: 2 [10240/60000 (17%)]\tLoss: 0.305182\n",
      "Train Epoch: 2 [10880/60000 (18%)]\tLoss: 0.510836\n",
      "Train Epoch: 2 [11520/60000 (19%)]\tLoss: 0.325158\n",
      "Train Epoch: 2 [12160/60000 (20%)]\tLoss: 0.322576\n",
      "Train Epoch: 2 [12800/60000 (21%)]\tLoss: 0.472286\n",
      "Train Epoch: 2 [13440/60000 (22%)]\tLoss: 0.461200\n",
      "Train Epoch: 2 [14080/60000 (23%)]\tLoss: 0.475662\n",
      "Train Epoch: 2 [14720/60000 (25%)]\tLoss: 0.371446\n",
      "Train Epoch: 2 [15360/60000 (26%)]\tLoss: 0.204145\n",
      "Train Epoch: 2 [16000/60000 (27%)]\tLoss: 0.242138\n",
      "Train Epoch: 2 [16640/60000 (28%)]\tLoss: 0.356271\n",
      "Train Epoch: 2 [17280/60000 (29%)]\tLoss: 0.421255\n",
      "Train Epoch: 2 [17920/60000 (30%)]\tLoss: 0.324997\n",
      "Train Epoch: 2 [18560/60000 (31%)]\tLoss: 0.340289\n",
      "Train Epoch: 2 [19200/60000 (32%)]\tLoss: 0.489231\n",
      "Train Epoch: 2 [19840/60000 (33%)]\tLoss: 0.325557\n",
      "Train Epoch: 2 [20480/60000 (34%)]\tLoss: 0.364615\n",
      "Train Epoch: 2 [21120/60000 (35%)]\tLoss: 0.359661\n",
      "Train Epoch: 2 [21760/60000 (36%)]\tLoss: 0.494993\n",
      "Train Epoch: 2 [22400/60000 (37%)]\tLoss: 0.608070\n",
      "Train Epoch: 2 [23040/60000 (38%)]\tLoss: 0.490134\n",
      "Train Epoch: 2 [23680/60000 (39%)]\tLoss: 0.349357\n",
      "Train Epoch: 2 [24320/60000 (41%)]\tLoss: 0.411579\n",
      "Train Epoch: 2 [24960/60000 (42%)]\tLoss: 0.213331\n",
      "Train Epoch: 2 [25600/60000 (43%)]\tLoss: 0.198922\n",
      "Train Epoch: 2 [26240/60000 (44%)]\tLoss: 0.384264\n",
      "Train Epoch: 2 [26880/60000 (45%)]\tLoss: 0.295206\n",
      "Train Epoch: 2 [27520/60000 (46%)]\tLoss: 0.229421\n",
      "Train Epoch: 2 [28160/60000 (47%)]\tLoss: 0.172525\n",
      "Train Epoch: 2 [28800/60000 (48%)]\tLoss: 0.261068\n",
      "Train Epoch: 2 [29440/60000 (49%)]\tLoss: 0.527848\n",
      "Train Epoch: 2 [30080/60000 (50%)]\tLoss: 0.289187\n",
      "Train Epoch: 2 [30720/60000 (51%)]\tLoss: 0.318252\n",
      "Train Epoch: 2 [31360/60000 (52%)]\tLoss: 0.440064\n",
      "Train Epoch: 2 [32000/60000 (53%)]\tLoss: 0.673464\n",
      "Train Epoch: 2 [32640/60000 (54%)]\tLoss: 0.300046\n",
      "Train Epoch: 2 [33280/60000 (55%)]\tLoss: 0.268764\n",
      "Train Epoch: 2 [33920/60000 (57%)]\tLoss: 0.437125\n",
      "Train Epoch: 2 [34560/60000 (58%)]\tLoss: 0.392923\n",
      "Train Epoch: 2 [35200/60000 (59%)]\tLoss: 0.430960\n",
      "Train Epoch: 2 [35840/60000 (60%)]\tLoss: 0.468231\n",
      "Train Epoch: 2 [36480/60000 (61%)]\tLoss: 0.352580\n",
      "Train Epoch: 2 [37120/60000 (62%)]\tLoss: 0.487540\n",
      "Train Epoch: 2 [37760/60000 (63%)]\tLoss: 0.425972\n",
      "Train Epoch: 2 [38400/60000 (64%)]\tLoss: 0.277246\n",
      "Train Epoch: 2 [39040/60000 (65%)]\tLoss: 0.195153\n",
      "Train Epoch: 2 [39680/60000 (66%)]\tLoss: 0.423735\n",
      "Train Epoch: 2 [40320/60000 (67%)]\tLoss: 0.203856\n",
      "Train Epoch: 2 [40960/60000 (68%)]\tLoss: 0.477117\n",
      "Train Epoch: 2 [41600/60000 (69%)]\tLoss: 0.138121\n",
      "Train Epoch: 2 [42240/60000 (70%)]\tLoss: 0.339935\n",
      "Train Epoch: 2 [42880/60000 (71%)]\tLoss: 0.472468\n",
      "Train Epoch: 2 [43520/60000 (72%)]\tLoss: 0.283143\n",
      "Train Epoch: 2 [44160/60000 (74%)]\tLoss: 0.400769\n",
      "Train Epoch: 2 [44800/60000 (75%)]\tLoss: 0.249929\n",
      "Train Epoch: 2 [45440/60000 (76%)]\tLoss: 0.523219\n",
      "Train Epoch: 2 [46080/60000 (77%)]\tLoss: 0.312459\n",
      "Train Epoch: 2 [46720/60000 (78%)]\tLoss: 0.264517\n",
      "Train Epoch: 2 [47360/60000 (79%)]\tLoss: 0.200801\n",
      "Train Epoch: 2 [48000/60000 (80%)]\tLoss: 0.270618\n",
      "Train Epoch: 2 [48640/60000 (81%)]\tLoss: 0.345965\n",
      "Train Epoch: 2 [49280/60000 (82%)]\tLoss: 0.454642\n",
      "Train Epoch: 2 [49920/60000 (83%)]\tLoss: 0.271607\n",
      "Train Epoch: 2 [50560/60000 (84%)]\tLoss: 0.341421\n",
      "Train Epoch: 2 [51200/60000 (85%)]\tLoss: 0.458436\n",
      "Train Epoch: 2 [51840/60000 (86%)]\tLoss: 0.317465\n",
      "Train Epoch: 2 [52480/60000 (87%)]\tLoss: 0.340068\n",
      "Train Epoch: 2 [53120/60000 (88%)]\tLoss: 0.245447\n",
      "Train Epoch: 2 [53760/60000 (90%)]\tLoss: 0.246935\n",
      "Train Epoch: 2 [54400/60000 (91%)]\tLoss: 0.195828\n",
      "Train Epoch: 2 [55040/60000 (92%)]\tLoss: 0.487316\n",
      "Train Epoch: 2 [55680/60000 (93%)]\tLoss: 0.193381\n",
      "Train Epoch: 2 [56320/60000 (94%)]\tLoss: 0.368474\n",
      "Train Epoch: 2 [56960/60000 (95%)]\tLoss: 0.212662\n",
      "Train Epoch: 2 [57600/60000 (96%)]\tLoss: 0.565021\n",
      "Train Epoch: 2 [58240/60000 (97%)]\tLoss: 0.481060\n",
      "Train Epoch: 2 [58880/60000 (98%)]\tLoss: 0.280479\n",
      "Train Epoch: 2 [59520/60000 (99%)]\tLoss: 0.293229\n",
      "\n",
      "Test set: Avg. loss: 0.1161, Accuracy: 9633/10000 (96%)\n",
      "\n",
      "Train Epoch: 3 [0/60000 (0%)]\tLoss: 0.202818\n",
      "Train Epoch: 3 [640/60000 (1%)]\tLoss: 0.242395\n",
      "Train Epoch: 3 [1280/60000 (2%)]\tLoss: 0.377251\n",
      "Train Epoch: 3 [1920/60000 (3%)]\tLoss: 0.253762\n",
      "Train Epoch: 3 [2560/60000 (4%)]\tLoss: 0.270504\n",
      "Train Epoch: 3 [3200/60000 (5%)]\tLoss: 0.329122\n",
      "Train Epoch: 3 [3840/60000 (6%)]\tLoss: 0.273075\n",
      "Train Epoch: 3 [4480/60000 (7%)]\tLoss: 0.468076\n",
      "Train Epoch: 3 [5120/60000 (9%)]\tLoss: 0.514252\n",
      "Train Epoch: 3 [5760/60000 (10%)]\tLoss: 0.416662\n",
      "Train Epoch: 3 [6400/60000 (11%)]\tLoss: 0.321231\n",
      "Train Epoch: 3 [7040/60000 (12%)]\tLoss: 0.331774\n",
      "Train Epoch: 3 [7680/60000 (13%)]\tLoss: 0.254622\n",
      "Train Epoch: 3 [8320/60000 (14%)]\tLoss: 0.165515\n",
      "Train Epoch: 3 [8960/60000 (15%)]\tLoss: 0.256651\n",
      "Train Epoch: 3 [9600/60000 (16%)]\tLoss: 0.241913\n",
      "Train Epoch: 3 [10240/60000 (17%)]\tLoss: 0.269958\n",
      "Train Epoch: 3 [10880/60000 (18%)]\tLoss: 0.297252\n",
      "Train Epoch: 3 [11520/60000 (19%)]\tLoss: 0.434363\n",
      "Train Epoch: 3 [12160/60000 (20%)]\tLoss: 0.212204\n",
      "Train Epoch: 3 [12800/60000 (21%)]\tLoss: 0.464046\n",
      "Train Epoch: 3 [13440/60000 (22%)]\tLoss: 0.329245\n",
      "Train Epoch: 3 [14080/60000 (23%)]\tLoss: 0.353814\n",
      "Train Epoch: 3 [14720/60000 (25%)]\tLoss: 0.309835\n",
      "Train Epoch: 3 [15360/60000 (26%)]\tLoss: 0.326653\n",
      "Train Epoch: 3 [16000/60000 (27%)]\tLoss: 0.818918\n",
      "Train Epoch: 3 [16640/60000 (28%)]\tLoss: 0.518688\n",
      "Train Epoch: 3 [17280/60000 (29%)]\tLoss: 0.432052\n",
      "Train Epoch: 3 [17920/60000 (30%)]\tLoss: 0.304288\n",
      "Train Epoch: 3 [18560/60000 (31%)]\tLoss: 0.311019\n",
      "Train Epoch: 3 [19200/60000 (32%)]\tLoss: 0.349005\n",
      "Train Epoch: 3 [19840/60000 (33%)]\tLoss: 0.357751\n",
      "Train Epoch: 3 [20480/60000 (34%)]\tLoss: 0.191820\n",
      "Train Epoch: 3 [21120/60000 (35%)]\tLoss: 0.177901\n",
      "Train Epoch: 3 [21760/60000 (36%)]\tLoss: 0.339037\n",
      "Train Epoch: 3 [22400/60000 (37%)]\tLoss: 0.229859\n",
      "Train Epoch: 3 [23040/60000 (38%)]\tLoss: 0.426359\n",
      "Train Epoch: 3 [23680/60000 (39%)]\tLoss: 0.206463\n",
      "Train Epoch: 3 [24320/60000 (41%)]\tLoss: 0.251726\n",
      "Train Epoch: 3 [24960/60000 (42%)]\tLoss: 0.169874\n",
      "Train Epoch: 3 [25600/60000 (43%)]\tLoss: 0.422845\n",
      "Train Epoch: 3 [26240/60000 (44%)]\tLoss: 0.196385\n",
      "Train Epoch: 3 [26880/60000 (45%)]\tLoss: 0.205373\n",
      "Train Epoch: 3 [27520/60000 (46%)]\tLoss: 0.203915\n",
      "Train Epoch: 3 [28160/60000 (47%)]\tLoss: 0.336924\n",
      "Train Epoch: 3 [28800/60000 (48%)]\tLoss: 0.461353\n",
      "Train Epoch: 3 [29440/60000 (49%)]\tLoss: 0.160718\n",
      "Train Epoch: 3 [30080/60000 (50%)]\tLoss: 0.256363\n",
      "Train Epoch: 3 [30720/60000 (51%)]\tLoss: 0.241195\n",
      "Train Epoch: 3 [31360/60000 (52%)]\tLoss: 0.214604\n",
      "Train Epoch: 3 [32000/60000 (53%)]\tLoss: 0.451274\n",
      "Train Epoch: 3 [32640/60000 (54%)]\tLoss: 0.337892\n",
      "Train Epoch: 3 [33280/60000 (55%)]\tLoss: 0.188264\n",
      "Train Epoch: 3 [33920/60000 (57%)]\tLoss: 0.459743\n",
      "Train Epoch: 3 [34560/60000 (58%)]\tLoss: 0.249094\n",
      "Train Epoch: 3 [35200/60000 (59%)]\tLoss: 0.312314\n",
      "Train Epoch: 3 [35840/60000 (60%)]\tLoss: 0.459935\n",
      "Train Epoch: 3 [36480/60000 (61%)]\tLoss: 0.182673\n",
      "Train Epoch: 3 [37120/60000 (62%)]\tLoss: 0.197848\n",
      "Train Epoch: 3 [37760/60000 (63%)]\tLoss: 0.305314\n",
      "Train Epoch: 3 [38400/60000 (64%)]\tLoss: 0.470679\n",
      "Train Epoch: 3 [39040/60000 (65%)]\tLoss: 0.353900\n",
      "Train Epoch: 3 [39680/60000 (66%)]\tLoss: 0.194443\n",
      "Train Epoch: 3 [40320/60000 (67%)]\tLoss: 0.226030\n",
      "Train Epoch: 3 [40960/60000 (68%)]\tLoss: 0.452655\n",
      "Train Epoch: 3 [41600/60000 (69%)]\tLoss: 0.339259\n",
      "Train Epoch: 3 [42240/60000 (70%)]\tLoss: 0.379802\n",
      "Train Epoch: 3 [42880/60000 (71%)]\tLoss: 0.183344\n",
      "Train Epoch: 3 [43520/60000 (72%)]\tLoss: 0.238985\n",
      "Train Epoch: 3 [44160/60000 (74%)]\tLoss: 0.286656\n",
      "Train Epoch: 3 [44800/60000 (75%)]\tLoss: 0.175090\n",
      "Train Epoch: 3 [45440/60000 (76%)]\tLoss: 0.235500\n",
      "Train Epoch: 3 [46080/60000 (77%)]\tLoss: 0.344939\n",
      "Train Epoch: 3 [46720/60000 (78%)]\tLoss: 0.194165\n",
      "Train Epoch: 3 [47360/60000 (79%)]\tLoss: 0.372513\n",
      "Train Epoch: 3 [48000/60000 (80%)]\tLoss: 0.323049\n",
      "Train Epoch: 3 [48640/60000 (81%)]\tLoss: 0.212026\n",
      "Train Epoch: 3 [49280/60000 (82%)]\tLoss: 0.224021\n",
      "Train Epoch: 3 [49920/60000 (83%)]\tLoss: 0.469652\n",
      "Train Epoch: 3 [50560/60000 (84%)]\tLoss: 0.413956\n",
      "Train Epoch: 3 [51200/60000 (85%)]\tLoss: 0.414018\n",
      "Train Epoch: 3 [51840/60000 (86%)]\tLoss: 0.247654\n",
      "Train Epoch: 3 [52480/60000 (87%)]\tLoss: 0.478838\n",
      "Train Epoch: 3 [53120/60000 (88%)]\tLoss: 0.228853\n",
      "Train Epoch: 3 [53760/60000 (90%)]\tLoss: 0.174673\n",
      "Train Epoch: 3 [54400/60000 (91%)]\tLoss: 0.400632\n",
      "Train Epoch: 3 [55040/60000 (92%)]\tLoss: 0.296723\n",
      "Train Epoch: 3 [55680/60000 (93%)]\tLoss: 0.188496\n",
      "Train Epoch: 3 [56320/60000 (94%)]\tLoss: 0.300581\n",
      "Train Epoch: 3 [56960/60000 (95%)]\tLoss: 0.327027\n",
      "Train Epoch: 3 [57600/60000 (96%)]\tLoss: 0.512436\n",
      "Train Epoch: 3 [58240/60000 (97%)]\tLoss: 0.359603\n",
      "Train Epoch: 3 [58880/60000 (98%)]\tLoss: 0.107347\n",
      "Train Epoch: 3 [59520/60000 (99%)]\tLoss: 0.315963\n",
      "\n",
      "Test set: Avg. loss: 0.0985, Accuracy: 9687/10000 (97%)\n",
      "\n"
     ]
    }
   ],
   "source": [
    "test()\n",
    "for epoch in range(1, n_epochs + 1):\n",
    "  train(epoch)\n",
    "  test()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0, 0.5, 'negative log likelihood loss')"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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0s3ICeeG4oYQQkguErG4geD43//+Z4rplShRIm85RjGNHz8+onUtXrzYFAjEDaA4H+7ffffd5jEK+6nQARgG/v777xu3BvVxMCT8xRdfZI0bD+emVCmKG0IIIblJxAnFU6ZMMSKmXbt2flWL4eKsXr06onWdeOKJEmxqq7Fjx3q+58svv4yw1bkBnRtCCCEkCufmt99+kypVqnhWGw53igaSnJwbVCgGmzenrEmEEEJI+oubtm3bmtCQooIG4SEm9qYWjHhHOArgf/36zv1VqwpOpkkIIYRkKxGHpR544AEzZcK3335rRko98cQT5v6CBQtkzpw5iWkliSg0tXu349wceSTEJ6accNwbV/1DQgghJCuJ2Lk5/vjjzYgmCJtmzZrJtGnTTJgKUyC0adMmMa0kEYemIG7g5NSune/eEEIIIblAVBWKjzzySHnhhRfi3xoSt6RirWnYoIHIunUi338PYRr6/fv3i3z2mcixx4occkhi20oIIYSkhXODId8YxZTNs2tng7jR3JujjorMuXnuOZETThB5/PEENZAQQghJN3GDId+odYOpEM4++2x59913ZT9+7pO0C0upcxOJuPn6a+f/jz8monWEEEJIGoobJBD//PPPpt5N6dKlTQVhzMx91VVXMaE4DUASMahZ09+5QVgqEAhbjRkjgpk0dOquAJOsE0IIIdk5t1ThwoWlW7duJjyFiSuff/55+fzzz6VLly7xbyGJiBtvFMFI/euu83dufvhB5OBB7/cMHChy2WUiU6fmi5s9e5LUYEIIISQdEoqVTZs2ybhx4+T111+X5cuXy7HIQiUpBbk2PXvmP65TR6RoUceJ+fnnfEfHZsWK/NDVpk3OfYobQgghOePcIJF4zJgxcsopp0jNmjXlueeek169esmqVatk0aJFiWkliRoIm3r1Aoem4OZofs2GDXRuCCGE5KBzg/yaihUrSr9+/WT48OGmYjFJbzAvKYQNwk4nn+z/HMTMvn3O/W++yRc1zLkhhBCSM87N1KlT5aeffpIRI0ZQ2GQIl17q/H/11YKixR4VtXRp/n06N4QQQnJG3CAchYRikjmccopI3boif/whMmFCwZFSil26KFJx8+efjit08cUxNpYQQghJRliqdevWMnPmTBOOatWqVdDZv5faP/9JWgAteuWVInfeKTJ6tL8ACVTPJlJxc9FFIp98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e65uN+C25962l0uT7Q7l2KSNuMHQ7t9++03uvvtukxSMId0fffRRXtLw+vXrjSBROnToIG+++aYMGTJE7rzzTmnQoIFMmTJFmjZtmsKtIIQQQki6kHJxAxCCChSGmj17doFlZ599trkRQgghhKRdheJsAonLqLRsJzDnArm63YDbnnvbnqvbDbjtubftxTN0u1NeoZgQQgghJJ7QuSGEEEJIVkFxQwghhJCsguKGEEIIIVkFxQ0hhBBCsgqKmzjxzDPPSJ06daREiRJy3HHHyeeffy7pDIoiHnPMMaZSc5UqVUyF6JUrV/q95sQTTzRVnO1b//79/V6DOkQopliqVCmznltvvVX+/vvvAsP5W7dubbLt69evL2PHjk3Z/hs2bFiBbWrUqFHe83v27JHrrrtODj30UClTpoyceeaZBab7yLRtVvBZ7m3HDdubbcd77ty5cvrpp5tKptgO1MKywTgK1NY6/PDDpWTJktK1a1dZtWqV32u2bt0qF1xwgSlcVqFCBbn88stl586dfq9Zvny5nHDCCWY7UMX14YcfLtCWt99+25xjeE2zZs3kgw8+iLgt8dju/fv3y+23327aULp0afMaFEn95ZdfQp4nDz74YFpvd6htB5dcckmB7erRo0dWH3Pg9Z3H7ZFHHpFMP+ZBwWgpEhvjxo3zHXLIIb6XX37Z98033/iuvPJKX4UKFXy//vqrL13p3r27b8yYMb6vv/7at2zZMl/Pnj19tWrV8u3cuTPvNZ07dzbbsnHjxrzb9u3b857/+++/fU2bNvV17drV9+WXX/o++OAD32GHHeYbPHhw3mvWrFnjK1WqlG/QoEG+b7/91vfUU0/5ihQp4vvoo49Ssv+GDh3qa9Kkid82/fbbb3nP9+/f31ezZk3fzJkzfYsXL/a1a9fO16FDh4zeZmXz5s1+2z19+nSMlPTNmjUr64432vaf//zHN2nSJLONkydP9nv+wQcf9JUvX943ZcoU3//+9z9fr169fHXr1vX99ddfea/p0aOHr0WLFr5Fixb55s2b56tfv77vvPPOy3se+6Zq1aq+Cy64wHyP3nrrLV/JkiV9zz//fN5r5s+fb7b/4YcfNvtjyJAhvmLFivm++uqriNoSj+3+448/zLEbP36877vvvvMtXLjQd+yxx/ratGnjt47atWv77r33Xr/zwL4upON2h9p2cPHF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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig = plt.figure()\n",
    "plt.plot(train_counter, train_losses, color='blue')\n",
    "plt.scatter(test_counter, test_losses, color='red')\n",
    "plt.legend(['Train Loss', 'Test Loss'], loc='upper right')\n",
    "plt.xlabel('number of training examples seen')\n",
    "plt.ylabel('negative log likelihood loss')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\xia0jaying\\AppData\\Local\\Temp\\ipykernel_22392\\161431047.py:17: UserWarning: Implicit dimension choice for log_softmax has been deprecated. Change the call to include dim=X as an argument.\n",
      "  return F.log_softmax(x)\n"
     ]
    }
   ],
   "source": [
    "with torch.no_grad():\n",
    "  output = network(example_data)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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AAyRN9gNAAAA/hMerp/badiwoav9/Pzzz9p4cnKyCkXMmAEAABiCxAwAAMAQJGYAAACGIDEDAAAwBIkZAACAIajKBAAghDhVU4aFhWnjlmVp42PHjtXGR4wY4ao98fHx2vjTTz+tja9evVrlZsyYAQAAGILEDAAAwBAkZgAAAIYgMQMAADAEiRkAAIAhqMoEAMDHSpYsqY2/9tpr2njRokW18S1btmjjb731ljYeExOjjcfFxWnjhw8f1sZ79+6tjX/44Yfa+KhRo7Tx6dOnq9yAGTMAAABDkJgBAAAYgsQMAADAECRmAAAAhiAxAwAAMARVmUFSqVIlbbxZs2baeL169bTxbt26uVrzrE2bNq6qcQAAZnCqpnz99de18a5du2rjf/zxhzZ+6NAhV9u3bdtWGz916pRyY8mSJa6qLMeMGaONp6SkuKpONRUzZgAAAIYgMQMAADAEiRkAAIAhSMwAAAAMQWIGAABgiDDLsqzMNpIKi2LFiuVMi3yqVatWrqpWunfvro179T47VWUePXpUG69Ro4Y2fuLECeUHJ0+edKxYMlUojiunf6MePXpo4y+88II2Xr58eW08C7/OstS/J06cqI3PmTPH1bjyO8ZVcNSqVUsbX7NmjTZevHhxbXzYsGHa+OzZs7XxS5cuKZNUr15dG58wYYI23qhRI228du3a2nhycrIycVwxYwYAAGAIEjMAAABDkJgBAAAYgsQMAADAECRmAAAAhgj5qkynapaBAwdq43369NHGb7rpJm08b179cqROb/u5c+dcVcs4/bs4VWU6Hbd06dLaeFJSkvIDqsfM0rBhQ2180aJF2niFChVc7T8hIcGTqswyZcpo43ny5NHGFy9erI136dJF5UaMq8CqUqWKNr5+/XptvGzZstr4e++9p4337NlThdJTEFauXKmNb9++XRtv0qRJUKpTqcoEAADwCRIzAAAAQ5CYAQAAGILEDAAAwBAkZgAAAIbQlwzmQtWqVdPG4+LitPE6dep4clyn6pp///vf2vjatWu18YsXL2rjmzZt0sZLlCihvKhO80tVJszy8ssvu6q+3LNnjzY+depUV1Voly9fVm4MGTJEGx8+fLir3yMRERHa+Pnz5121B6HFqcrfqfryyJEj2nj//v1VKPn000+18R07dmjjDRo00MbbtWunjS9btkwFEzNmAAAAhiAxAwAAMASJGQAAgCFIzAAAAAxBYgYAAGCIXLdWZrdu3bTxmTNnulor00liYqKr43799dfKC4ULF9bGv/vuO2381ltv1cad/rmPHTumjU+ePNlVtVywsKZfcHTq1EkbX7hwoTZ++PBhV2trJicnq2DYunWrNl6/fn1XVZyTJk1Sfsa48oZT/xgzZow2/ueff7qqLty/f/8NtC73uP3227XxvXv3uqoGd/p95FWVNWtlAgAA+ASJGQAAgCFIzAAAAAxBYgYAAGAIEjMAAABDGL9WZqlSpbTxYcOGaeODBw/WxsPCwhyrI3RGjhypjc+aNUsFg1M1jlP1pdPP6yQ6Olobb9u2rS+qMhEcTmtHhoeHu6r+DVb1pVecqugQWmrWrKmNjxo1ShvPm1f/J/ill17Sxqm+vD6nqu9FixZp47Gxsdp47dq1XVVre40ZMwAAAEOQmAEAABiCxAwAAMAQJGYAAACGIDEDAAAwhDFVmc2aNdPG33zzTW28evXqrtaCdFpT0mkNs7Vr16pg/LxO1ZFO1SNZWOo0R7cHrqdEiRLauNPahk5V01559dVXtfGqVatq49u2bdPG3377bU/bBX8aMGCAq7WO169fr41PnDjR03aFivMOa1nOmzdPG3/kkUeUiZgxAwAAMASJGQAAgCFIzAAAAAxBYgYAAGAIEjMAAIBQrcp0Whts7Nixrqov3Xr44Ye18QsXLrhao7NMmTLa+EMPPaSN9+3bVxsvWrSoNp4vXz5lknPnzgW7CTCYU9V0q1attPGYmBht/MiRI9r4oUOHtPF169YpN5o3b+7q94vTWrNJSUnaOGtl4np/Zy5fvuyq+pJqeG+tWrXK1d//jh07auOslQkAABBiSMwAAAAMQWIGAABgCBIzAAAAQ5CYAQAAhGpVplMVVOPGjQN63IMHDwal+sWpusu0qpt9+/Zp488880yOtwX+cerUKW184MCB2visWbO08bvvvlsbv/32213FA23Pnj1BOS78ISoqylVV4OrVqwPcImTn77PTv2NOYcYMAADAECRmAAAAhiAxAwAAMASJGQAAgCFIzAAAAEK1KvOPP/7QxhMTE12tTekXb731lja+fPlyV+9Dr169tPHBgwcrLyxevFgbT0hI8GT/CC07d+7Uxlu3bq2NN23a1NX+b7vtNm28SpUqrn7v/OMf/3B13G3btrnaHqFl165d2niRIkVcVRfv37/f03ZB74cfftDG69Spo4KJGTMAAABDkJgBAAAYgsQMAADAECRmAAAAhiAxAwAACNWqzCNHjmjjbdq00cYbNGigjRcsWNDVcTds2KCN7969W5kkMjJSG+/QoYOrtb7Cw/U594kTJ7TxpKSkLLcRyC6n/rdixYqAHjcuLs7V9ikpKa7aD4gtW7Zo43//+9+18fbt22vjVGXmjK1bt2rj/fr1U8HEjBkAAIAhSMwAAAAMQWIGAABgCBIzAAAAQ5CYAQAAhGpVphOn6kjTqiYDrWvXrq7WALQsy1VV2RtvvKGNz5o1K8ttBPwmX758rrbfsWOHNr5mzRqPWoTcyKn616kqc8yYMdr4okWLtPHDhw/fQOtCV8+ePbXxHj16eFLF7TVmzAAAAAxBYgYAAGAIEjMAAABDkJgBAAAYgsQMAADAEMZUZYaamjVrauOvvvpqQI+7du3agO4fyM1rHgLZqeb96quvtPGYmBht/O2339bGe/fu7WoN6lDT1eGpBtOmTdPGixUrpo3v2bNHBRMzZgAAAIYgMQMAADAEiRkAAIAhSMwAAAAMQWIGAABgCKoyg2TgwIHaeIkSJTzZ/9atW7XxvXv3erJ/wEQFCxbUxmvVqpXjbUHoOX78uDbesWNHbfyHH37Qxh988EFXa7W+8sor2vj58+e18V27dmnjv/zyiwqGW265RRsvWbKkNj5q1ChtPDY2VhsPD9fPQfXr108bnz17tgomZswAAAAMQWIGAABgCBIzAAAAQ5CYAQAAGILEDAAAwBBUZQZYhw4dtPEuXboE9Ljz58/XxpOSkgJ6XCCYChQooI1XrVrV1X5WrlzpUYsA52rNOnXqaOPLly/Xxps0aaKNL1q0yFV7zp49q41/++23yqS1o0uVKqWNW5aljX///ffa+KRJk1y9b1euXFHBxIwZAACAIUjMAAAADEFiBgAAYAgSMwAAAEOQmAEAABiCqswAGzNmjDZeuHDhgB53w4YNAd0/YKJmzZp5sp9jx455sh8gO9WaLVq00MZbt26tjXfq1Ekbj4iI0MarV6+ujUdFRWnjtWvXVl5ISUnRxvfs2aONHzx4UBsfP368Nr5q1Spt/NKlS8pPmDEDAAAwBIkZAACAIUjMAAAADEFiBgAAYAgSMwAAAENQlemR2267zdUaYE5rfbk1depUbXz37t2e7B/wk0qVKgW7CcANc6oi/Oijj1zFvdKwYUNP9uO0BuX27ds92X9uwYwZAACAIUjMAAAADEFiBgAAYAgSMwAAAEOQmAEAABiCqkyPfPDBBwHd/+HDh7XxKVOmBPS4gJ/89NNPnuzHaS3Bbdu2ebJ/wE+2bt0a7CaEFGbMAAAADEFiBgAAYAgSMwAAAEOQmAEAABiCxAwAAMAQVGV65I8//gjoGmnjxo3TxpOSkjw5LpAbfPXVV9r40aNHtfFSpUpp440aNdLGFyxYcAOtA4DMMWMGAABgCBIzAAAAQ5CYAQAAGILEDAAAwBAkZgAAAIagKtMj3bp108bXrVunjRcsWFAbHzNmjDZONRiQubNnz2rjq1ev1sZ79uypjXfv3t3VONy8eXOW2wgA18OMGQAAgCFIzAAAAAxBYgYAAGAIEjMAAABDkJgBAAAYgqrMAK+Veccdd+R4WwBkNGTIEG28Zs2a2nihQoW08ejoaE/bBQBXY8YMAADAECRmAAAAhiAxAwAAMASJGQAAgCFIzAAAAAxBVSaAXC85OVkbb9CgQY63BQCuhxkzAAAAQ5CYAQAAGILEDAAAwBAkZgAAAH5KzCzLCnxLgBvgxz7qxzYjtPixj/qxzQgtViZ9NEuJ2enTp71qDxAQfuyjfmwzQosf+6gf24zQcjqTPhpmZeH0IiUlRSUmJqrIyEgVFhbmZfuAGyLdVzp5mTJlVHi4v67MM65gKsYVELxxlaXEDAAAAIHnr1MhAACAXIzEDAAAwBAkZgAAAIYgMQMAADAEiRkAAIAhSMwAAAAMQWIGAACgzPC/nkLOfw3ByUwAAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 640x480 with 6 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig = plt.figure()\n",
    "for i in range(6):\n",
    "  plt.subplot(2,3,i+1)\n",
    "  plt.tight_layout()\n",
    "  plt.imshow(example_data[i][0], cmap='gray', interpolation='none')\n",
    "  plt.title(\"Prediction: {}\".format(\n",
    "    output.data.max(1, keepdim=True)[1][i].item()))\n",
    "  plt.xticks([])\n",
    "  plt.yticks([])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [],
   "source": [
    "continued_network = Net()\n",
    "continued_optimizer = optim.SGD(network.parameters(), lr=learning_rate,\n",
    "                                momentum=momentum)\n",
    "network_state_dict = torch.load(\n",
    "'/homework/model.pth'\n",
    ")\n",
    "continued_network.load_state_dict(network_state_dict)\n",
    "optimizer_state_dict = torch.load(\n",
    "'/homework/optimizer.pth'\n",
    ")\n",
    "continued_optimizer.load_state_dict(optimizer_state_dict)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\xia0jaying\\AppData\\Local\\Temp\\ipykernel_22392\\161431047.py:17: UserWarning: Implicit dimension choice for log_softmax has been deprecated. Change the call to include dim=X as an argument.\n",
      "  return F.log_softmax(x)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train Epoch: 4 [0/60000 (0%)]\tLoss: 0.197592\n",
      "Train Epoch: 4 [640/60000 (1%)]\tLoss: 0.361990\n",
      "Train Epoch: 4 [1280/60000 (2%)]\tLoss: 0.334524\n",
      "Train Epoch: 4 [1920/60000 (3%)]\tLoss: 0.419590\n",
      "Train Epoch: 4 [2560/60000 (4%)]\tLoss: 0.480829\n",
      "Train Epoch: 4 [3200/60000 (5%)]\tLoss: 0.129001\n",
      "Train Epoch: 4 [3840/60000 (6%)]\tLoss: 0.300890\n",
      "Train Epoch: 4 [4480/60000 (7%)]\tLoss: 0.356415\n",
      "Train Epoch: 4 [5120/60000 (9%)]\tLoss: 0.147028\n",
      "Train Epoch: 4 [5760/60000 (10%)]\tLoss: 0.198814\n",
      "Train Epoch: 4 [6400/60000 (11%)]\tLoss: 0.166309\n",
      "Train Epoch: 4 [7040/60000 (12%)]\tLoss: 0.154390\n",
      "Train Epoch: 4 [7680/60000 (13%)]\tLoss: 0.219417\n",
      "Train Epoch: 4 [8320/60000 (14%)]\tLoss: 0.366087\n",
      "Train Epoch: 4 [8960/60000 (15%)]\tLoss: 0.446831\n",
      "Train Epoch: 4 [9600/60000 (16%)]\tLoss: 0.155697\n",
      "Train Epoch: 4 [10240/60000 (17%)]\tLoss: 0.155626\n",
      "Train Epoch: 4 [10880/60000 (18%)]\tLoss: 0.458364\n",
      "Train Epoch: 4 [11520/60000 (19%)]\tLoss: 0.142226\n",
      "Train Epoch: 4 [12160/60000 (20%)]\tLoss: 0.234913\n",
      "Train Epoch: 4 [12800/60000 (21%)]\tLoss: 0.324836\n",
      "Train Epoch: 4 [13440/60000 (22%)]\tLoss: 0.258141\n",
      "Train Epoch: 4 [14080/60000 (23%)]\tLoss: 0.306984\n",
      "Train Epoch: 4 [14720/60000 (25%)]\tLoss: 0.326999\n",
      "Train Epoch: 4 [15360/60000 (26%)]\tLoss: 0.141828\n",
      "Train Epoch: 4 [16000/60000 (27%)]\tLoss: 0.135506\n",
      "Train Epoch: 4 [16640/60000 (28%)]\tLoss: 0.198032\n",
      "Train Epoch: 4 [17280/60000 (29%)]\tLoss: 0.233733\n",
      "Train Epoch: 4 [17920/60000 (30%)]\tLoss: 0.383004\n",
      "Train Epoch: 4 [18560/60000 (31%)]\tLoss: 0.292127\n",
      "Train Epoch: 4 [19200/60000 (32%)]\tLoss: 0.329328\n",
      "Train Epoch: 4 [19840/60000 (33%)]\tLoss: 0.407587\n",
      "Train Epoch: 4 [20480/60000 (34%)]\tLoss: 0.203948\n",
      "Train Epoch: 4 [21120/60000 (35%)]\tLoss: 0.323710\n",
      "Train Epoch: 4 [21760/60000 (36%)]\tLoss: 0.053634\n",
      "Train Epoch: 4 [22400/60000 (37%)]\tLoss: 0.224989\n",
      "Train Epoch: 4 [23040/60000 (38%)]\tLoss: 0.295489\n",
      "Train Epoch: 4 [23680/60000 (39%)]\tLoss: 0.293074\n",
      "Train Epoch: 4 [24320/60000 (41%)]\tLoss: 0.154139\n",
      "Train Epoch: 4 [24960/60000 (42%)]\tLoss: 0.176115\n",
      "Train Epoch: 4 [25600/60000 (43%)]\tLoss: 0.400444\n",
      "Train Epoch: 4 [26240/60000 (44%)]\tLoss: 0.208957\n",
      "Train Epoch: 4 [26880/60000 (45%)]\tLoss: 0.348570\n",
      "Train Epoch: 4 [27520/60000 (46%)]\tLoss: 0.158161\n",
      "Train Epoch: 4 [28160/60000 (47%)]\tLoss: 0.327745\n",
      "Train Epoch: 4 [28800/60000 (48%)]\tLoss: 0.229333\n",
      "Train Epoch: 4 [29440/60000 (49%)]\tLoss: 0.206751\n",
      "Train Epoch: 4 [30080/60000 (50%)]\tLoss: 0.163959\n",
      "Train Epoch: 4 [30720/60000 (51%)]\tLoss: 0.222587\n",
      "Train Epoch: 4 [31360/60000 (52%)]\tLoss: 0.122617\n",
      "Train Epoch: 4 [32000/60000 (53%)]\tLoss: 0.215591\n",
      "Train Epoch: 4 [32640/60000 (54%)]\tLoss: 0.281983\n",
      "Train Epoch: 4 [33280/60000 (55%)]\tLoss: 0.183550\n",
      "Train Epoch: 4 [33920/60000 (57%)]\tLoss: 0.397346\n",
      "Train Epoch: 4 [34560/60000 (58%)]\tLoss: 0.239102\n",
      "Train Epoch: 4 [35200/60000 (59%)]\tLoss: 0.121313\n",
      "Train Epoch: 4 [35840/60000 (60%)]\tLoss: 0.275681\n",
      "Train Epoch: 4 [36480/60000 (61%)]\tLoss: 0.158677\n",
      "Train Epoch: 4 [37120/60000 (62%)]\tLoss: 0.188464\n",
      "Train Epoch: 4 [37760/60000 (63%)]\tLoss: 0.288364\n",
      "Train Epoch: 4 [38400/60000 (64%)]\tLoss: 0.179441\n",
      "Train Epoch: 4 [39040/60000 (65%)]\tLoss: 0.124740\n",
      "Train Epoch: 4 [39680/60000 (66%)]\tLoss: 0.184202\n",
      "Train Epoch: 4 [40320/60000 (67%)]\tLoss: 0.328546\n",
      "Train Epoch: 4 [40960/60000 (68%)]\tLoss: 0.224400\n",
      "Train Epoch: 4 [41600/60000 (69%)]\tLoss: 0.138656\n",
      "Train Epoch: 4 [42240/60000 (70%)]\tLoss: 0.275652\n",
      "Train Epoch: 4 [42880/60000 (71%)]\tLoss: 0.279003\n",
      "Train Epoch: 4 [43520/60000 (72%)]\tLoss: 0.278295\n",
      "Train Epoch: 4 [44160/60000 (74%)]\tLoss: 0.318547\n",
      "Train Epoch: 4 [44800/60000 (75%)]\tLoss: 0.255705\n",
      "Train Epoch: 4 [45440/60000 (76%)]\tLoss: 0.201245\n",
      "Train Epoch: 4 [46080/60000 (77%)]\tLoss: 0.157325\n",
      "Train Epoch: 4 [46720/60000 (78%)]\tLoss: 0.323838\n",
      "Train Epoch: 4 [47360/60000 (79%)]\tLoss: 0.136886\n",
      "Train Epoch: 4 [48000/60000 (80%)]\tLoss: 0.279971\n",
      "Train Epoch: 4 [48640/60000 (81%)]\tLoss: 0.395483\n",
      "Train Epoch: 4 [49280/60000 (82%)]\tLoss: 0.171388\n",
      "Train Epoch: 4 [49920/60000 (83%)]\tLoss: 0.312678\n",
      "Train Epoch: 4 [50560/60000 (84%)]\tLoss: 0.217138\n",
      "Train Epoch: 4 [51200/60000 (85%)]\tLoss: 0.385846\n",
      "Train Epoch: 4 [51840/60000 (86%)]\tLoss: 0.250590\n",
      "Train Epoch: 4 [52480/60000 (87%)]\tLoss: 0.151268\n",
      "Train Epoch: 4 [53120/60000 (88%)]\tLoss: 0.284517\n",
      "Train Epoch: 4 [53760/60000 (90%)]\tLoss: 0.267754\n",
      "Train Epoch: 4 [54400/60000 (91%)]\tLoss: 0.304441\n",
      "Train Epoch: 4 [55040/60000 (92%)]\tLoss: 0.329411\n",
      "Train Epoch: 4 [55680/60000 (93%)]\tLoss: 0.313040\n",
      "Train Epoch: 4 [56320/60000 (94%)]\tLoss: 0.246148\n",
      "Train Epoch: 4 [56960/60000 (95%)]\tLoss: 0.229217\n",
      "Train Epoch: 4 [57600/60000 (96%)]\tLoss: 0.213743\n",
      "Train Epoch: 4 [58240/60000 (97%)]\tLoss: 0.191513\n",
      "Train Epoch: 4 [58880/60000 (98%)]\tLoss: 0.279996\n",
      "Train Epoch: 4 [59520/60000 (99%)]\tLoss: 0.264727\n",
      "\n",
      "Test set: Avg. loss: 0.0804, Accuracy: 9745/10000 (97%)\n",
      "\n",
      "Train Epoch: 5 [0/60000 (0%)]\tLoss: 0.715245\n",
      "Train Epoch: 5 [640/60000 (1%)]\tLoss: 0.250841\n",
      "Train Epoch: 5 [1280/60000 (2%)]\tLoss: 0.430113\n",
      "Train Epoch: 5 [1920/60000 (3%)]\tLoss: 0.312956\n",
      "Train Epoch: 5 [2560/60000 (4%)]\tLoss: 0.105006\n",
      "Train Epoch: 5 [3200/60000 (5%)]\tLoss: 0.246730\n",
      "Train Epoch: 5 [3840/60000 (6%)]\tLoss: 0.208448\n",
      "Train Epoch: 5 [4480/60000 (7%)]\tLoss: 0.189071\n",
      "Train Epoch: 5 [5120/60000 (9%)]\tLoss: 0.181931\n",
      "Train Epoch: 5 [5760/60000 (10%)]\tLoss: 0.261274\n",
      "Train Epoch: 5 [6400/60000 (11%)]\tLoss: 0.201104\n",
      "Train Epoch: 5 [7040/60000 (12%)]\tLoss: 0.212223\n",
      "Train Epoch: 5 [7680/60000 (13%)]\tLoss: 0.160272\n",
      "Train Epoch: 5 [8320/60000 (14%)]\tLoss: 0.215840\n",
      "Train Epoch: 5 [8960/60000 (15%)]\tLoss: 0.204964\n",
      "Train Epoch: 5 [9600/60000 (16%)]\tLoss: 0.364632\n",
      "Train Epoch: 5 [10240/60000 (17%)]\tLoss: 0.374277\n",
      "Train Epoch: 5 [10880/60000 (18%)]\tLoss: 0.385278\n",
      "Train Epoch: 5 [11520/60000 (19%)]\tLoss: 0.230630\n",
      "Train Epoch: 5 [12160/60000 (20%)]\tLoss: 0.097310\n",
      "Train Epoch: 5 [12800/60000 (21%)]\tLoss: 0.280939\n",
      "Train Epoch: 5 [13440/60000 (22%)]\tLoss: 0.305450\n",
      "Train Epoch: 5 [14080/60000 (23%)]\tLoss: 0.208784\n",
      "Train Epoch: 5 [14720/60000 (25%)]\tLoss: 0.235703\n",
      "Train Epoch: 5 [15360/60000 (26%)]\tLoss: 0.127400\n",
      "Train Epoch: 5 [16000/60000 (27%)]\tLoss: 0.200048\n",
      "Train Epoch: 5 [16640/60000 (28%)]\tLoss: 0.304748\n",
      "Train Epoch: 5 [17280/60000 (29%)]\tLoss: 0.136920\n",
      "Train Epoch: 5 [17920/60000 (30%)]\tLoss: 0.199834\n",
      "Train Epoch: 5 [18560/60000 (31%)]\tLoss: 0.079289\n",
      "Train Epoch: 5 [19200/60000 (32%)]\tLoss: 0.220315\n",
      "Train Epoch: 5 [19840/60000 (33%)]\tLoss: 0.234105\n",
      "Train Epoch: 5 [20480/60000 (34%)]\tLoss: 0.153557\n",
      "Train Epoch: 5 [21120/60000 (35%)]\tLoss: 0.286572\n",
      "Train Epoch: 5 [21760/60000 (36%)]\tLoss: 0.259337\n",
      "Train Epoch: 5 [22400/60000 (37%)]\tLoss: 0.101870\n",
      "Train Epoch: 5 [23040/60000 (38%)]\tLoss: 0.292704\n",
      "Train Epoch: 5 [23680/60000 (39%)]\tLoss: 0.152103\n",
      "Train Epoch: 5 [24320/60000 (41%)]\tLoss: 0.107672\n",
      "Train Epoch: 5 [24960/60000 (42%)]\tLoss: 0.290033\n",
      "Train Epoch: 5 [25600/60000 (43%)]\tLoss: 0.104363\n",
      "Train Epoch: 5 [26240/60000 (44%)]\tLoss: 0.194893\n",
      "Train Epoch: 5 [26880/60000 (45%)]\tLoss: 0.337530\n",
      "Train Epoch: 5 [27520/60000 (46%)]\tLoss: 0.206656\n",
      "Train Epoch: 5 [28160/60000 (47%)]\tLoss: 0.109997\n",
      "Train Epoch: 5 [28800/60000 (48%)]\tLoss: 0.178826\n",
      "Train Epoch: 5 [29440/60000 (49%)]\tLoss: 0.283235\n",
      "Train Epoch: 5 [30080/60000 (50%)]\tLoss: 0.173514\n",
      "Train Epoch: 5 [30720/60000 (51%)]\tLoss: 0.182366\n",
      "Train Epoch: 5 [31360/60000 (52%)]\tLoss: 0.401559\n",
      "Train Epoch: 5 [32000/60000 (53%)]\tLoss: 0.301356\n",
      "Train Epoch: 5 [32640/60000 (54%)]\tLoss: 0.273615\n",
      "Train Epoch: 5 [33280/60000 (55%)]\tLoss: 0.206762\n",
      "Train Epoch: 5 [33920/60000 (57%)]\tLoss: 0.236277\n",
      "Train Epoch: 5 [34560/60000 (58%)]\tLoss: 0.148418\n",
      "Train Epoch: 5 [35200/60000 (59%)]\tLoss: 0.179672\n",
      "Train Epoch: 5 [35840/60000 (60%)]\tLoss: 0.237049\n",
      "Train Epoch: 5 [36480/60000 (61%)]\tLoss: 0.075855\n",
      "Train Epoch: 5 [37120/60000 (62%)]\tLoss: 0.130666\n",
      "Train Epoch: 5 [37760/60000 (63%)]\tLoss: 0.129338\n",
      "Train Epoch: 5 [38400/60000 (64%)]\tLoss: 0.195996\n",
      "Train Epoch: 5 [39040/60000 (65%)]\tLoss: 0.599550\n",
      "Train Epoch: 5 [39680/60000 (66%)]\tLoss: 0.269421\n",
      "Train Epoch: 5 [40320/60000 (67%)]\tLoss: 0.129221\n",
      "Train Epoch: 5 [40960/60000 (68%)]\tLoss: 0.162951\n",
      "Train Epoch: 5 [41600/60000 (69%)]\tLoss: 0.205542\n",
      "Train Epoch: 5 [42240/60000 (70%)]\tLoss: 0.236334\n",
      "Train Epoch: 5 [42880/60000 (71%)]\tLoss: 0.229115\n",
      "Train Epoch: 5 [43520/60000 (72%)]\tLoss: 0.287715\n",
      "Train Epoch: 5 [44160/60000 (74%)]\tLoss: 0.117713\n",
      "Train Epoch: 5 [44800/60000 (75%)]\tLoss: 0.454152\n",
      "Train Epoch: 5 [45440/60000 (76%)]\tLoss: 0.255731\n",
      "Train Epoch: 5 [46080/60000 (77%)]\tLoss: 0.225665\n",
      "Train Epoch: 5 [46720/60000 (78%)]\tLoss: 0.229517\n",
      "Train Epoch: 5 [47360/60000 (79%)]\tLoss: 0.190445\n",
      "Train Epoch: 5 [48000/60000 (80%)]\tLoss: 0.350988\n",
      "Train Epoch: 5 [48640/60000 (81%)]\tLoss: 0.255647\n",
      "Train Epoch: 5 [49280/60000 (82%)]\tLoss: 0.202276\n",
      "Train Epoch: 5 [49920/60000 (83%)]\tLoss: 0.364308\n",
      "Train Epoch: 5 [50560/60000 (84%)]\tLoss: 0.083718\n",
      "Train Epoch: 5 [51200/60000 (85%)]\tLoss: 0.346285\n",
      "Train Epoch: 5 [51840/60000 (86%)]\tLoss: 0.165669\n",
      "Train Epoch: 5 [52480/60000 (87%)]\tLoss: 0.295854\n",
      "Train Epoch: 5 [53120/60000 (88%)]\tLoss: 0.112741\n",
      "Train Epoch: 5 [53760/60000 (90%)]\tLoss: 0.123561\n",
      "Train Epoch: 5 [54400/60000 (91%)]\tLoss: 0.111123\n",
      "Train Epoch: 5 [55040/60000 (92%)]\tLoss: 0.309166\n",
      "Train Epoch: 5 [55680/60000 (93%)]\tLoss: 0.153763\n",
      "Train Epoch: 5 [56320/60000 (94%)]\tLoss: 0.179644\n",
      "Train Epoch: 5 [56960/60000 (95%)]\tLoss: 0.369342\n",
      "Train Epoch: 5 [57600/60000 (96%)]\tLoss: 0.313509\n",
      "Train Epoch: 5 [58240/60000 (97%)]\tLoss: 0.219725\n",
      "Train Epoch: 5 [58880/60000 (98%)]\tLoss: 0.129219\n",
      "Train Epoch: 5 [59520/60000 (99%)]\tLoss: 0.120004\n",
      "\n",
      "Test set: Avg. loss: 0.0733, Accuracy: 9773/10000 (98%)\n",
      "\n",
      "Train Epoch: 6 [0/60000 (0%)]\tLoss: 0.372637\n",
      "Train Epoch: 6 [640/60000 (1%)]\tLoss: 0.396976\n",
      "Train Epoch: 6 [1280/60000 (2%)]\tLoss: 0.349779\n",
      "Train Epoch: 6 [1920/60000 (3%)]\tLoss: 0.121717\n",
      "Train Epoch: 6 [2560/60000 (4%)]\tLoss: 0.174184\n",
      "Train Epoch: 6 [3200/60000 (5%)]\tLoss: 0.279736\n",
      "Train Epoch: 6 [3840/60000 (6%)]\tLoss: 0.302781\n",
      "Train Epoch: 6 [4480/60000 (7%)]\tLoss: 0.281759\n",
      "Train Epoch: 6 [5120/60000 (9%)]\tLoss: 0.149248\n",
      "Train Epoch: 6 [5760/60000 (10%)]\tLoss: 0.203880\n",
      "Train Epoch: 6 [6400/60000 (11%)]\tLoss: 0.231332\n",
      "Train Epoch: 6 [7040/60000 (12%)]\tLoss: 0.255745\n",
      "Train Epoch: 6 [7680/60000 (13%)]\tLoss: 0.264443\n",
      "Train Epoch: 6 [8320/60000 (14%)]\tLoss: 0.173261\n",
      "Train Epoch: 6 [8960/60000 (15%)]\tLoss: 0.201094\n",
      "Train Epoch: 6 [9600/60000 (16%)]\tLoss: 0.300601\n",
      "Train Epoch: 6 [10240/60000 (17%)]\tLoss: 0.258351\n",
      "Train Epoch: 6 [10880/60000 (18%)]\tLoss: 0.198102\n",
      "Train Epoch: 6 [11520/60000 (19%)]\tLoss: 0.242583\n",
      "Train Epoch: 6 [12160/60000 (20%)]\tLoss: 0.178298\n",
      "Train Epoch: 6 [12800/60000 (21%)]\tLoss: 0.271529\n",
      "Train Epoch: 6 [13440/60000 (22%)]\tLoss: 0.191272\n",
      "Train Epoch: 6 [14080/60000 (23%)]\tLoss: 0.119154\n",
      "Train Epoch: 6 [14720/60000 (25%)]\tLoss: 0.222994\n",
      "Train Epoch: 6 [15360/60000 (26%)]\tLoss: 0.098653\n",
      "Train Epoch: 6 [16000/60000 (27%)]\tLoss: 0.242039\n",
      "Train Epoch: 6 [16640/60000 (28%)]\tLoss: 0.274769\n",
      "Train Epoch: 6 [17280/60000 (29%)]\tLoss: 0.359266\n",
      "Train Epoch: 6 [17920/60000 (30%)]\tLoss: 0.110342\n",
      "Train Epoch: 6 [18560/60000 (31%)]\tLoss: 0.448418\n",
      "Train Epoch: 6 [19200/60000 (32%)]\tLoss: 0.475314\n",
      "Train Epoch: 6 [19840/60000 (33%)]\tLoss: 0.233741\n",
      "Train Epoch: 6 [20480/60000 (34%)]\tLoss: 0.188521\n",
      "Train Epoch: 6 [21120/60000 (35%)]\tLoss: 0.164024\n",
      "Train Epoch: 6 [21760/60000 (36%)]\tLoss: 0.310633\n",
      "Train Epoch: 6 [22400/60000 (37%)]\tLoss: 0.318140\n",
      "Train Epoch: 6 [23040/60000 (38%)]\tLoss: 0.287171\n",
      "Train Epoch: 6 [23680/60000 (39%)]\tLoss: 0.045617\n",
      "Train Epoch: 6 [24320/60000 (41%)]\tLoss: 0.241972\n",
      "Train Epoch: 6 [24960/60000 (42%)]\tLoss: 0.159072\n",
      "Train Epoch: 6 [25600/60000 (43%)]\tLoss: 0.446015\n",
      "Train Epoch: 6 [26240/60000 (44%)]\tLoss: 0.225807\n",
      "Train Epoch: 6 [26880/60000 (45%)]\tLoss: 0.420047\n",
      "Train Epoch: 6 [27520/60000 (46%)]\tLoss: 0.171902\n",
      "Train Epoch: 6 [28160/60000 (47%)]\tLoss: 0.173426\n",
      "Train Epoch: 6 [28800/60000 (48%)]\tLoss: 0.334235\n",
      "Train Epoch: 6 [29440/60000 (49%)]\tLoss: 0.262795\n",
      "Train Epoch: 6 [30080/60000 (50%)]\tLoss: 0.270250\n",
      "Train Epoch: 6 [30720/60000 (51%)]\tLoss: 0.094517\n",
      "Train Epoch: 6 [31360/60000 (52%)]\tLoss: 0.353829\n",
      "Train Epoch: 6 [32000/60000 (53%)]\tLoss: 0.167853\n",
      "Train Epoch: 6 [32640/60000 (54%)]\tLoss: 0.258224\n",
      "Train Epoch: 6 [33280/60000 (55%)]\tLoss: 0.164705\n",
      "Train Epoch: 6 [33920/60000 (57%)]\tLoss: 0.199090\n",
      "Train Epoch: 6 [34560/60000 (58%)]\tLoss: 0.342016\n",
      "Train Epoch: 6 [35200/60000 (59%)]\tLoss: 0.163795\n",
      "Train Epoch: 6 [35840/60000 (60%)]\tLoss: 0.213605\n",
      "Train Epoch: 6 [36480/60000 (61%)]\tLoss: 0.134146\n",
      "Train Epoch: 6 [37120/60000 (62%)]\tLoss: 0.150737\n",
      "Train Epoch: 6 [37760/60000 (63%)]\tLoss: 0.362681\n",
      "Train Epoch: 6 [38400/60000 (64%)]\tLoss: 0.094462\n",
      "Train Epoch: 6 [39040/60000 (65%)]\tLoss: 0.101968\n",
      "Train Epoch: 6 [39680/60000 (66%)]\tLoss: 0.247903\n",
      "Train Epoch: 6 [40320/60000 (67%)]\tLoss: 0.163327\n",
      "Train Epoch: 6 [40960/60000 (68%)]\tLoss: 0.203814\n",
      "Train Epoch: 6 [41600/60000 (69%)]\tLoss: 0.157082\n",
      "Train Epoch: 6 [42240/60000 (70%)]\tLoss: 0.410005\n",
      "Train Epoch: 6 [42880/60000 (71%)]\tLoss: 0.242029\n",
      "Train Epoch: 6 [43520/60000 (72%)]\tLoss: 0.164622\n",
      "Train Epoch: 6 [44160/60000 (74%)]\tLoss: 0.119359\n",
      "Train Epoch: 6 [44800/60000 (75%)]\tLoss: 0.172621\n",
      "Train Epoch: 6 [45440/60000 (76%)]\tLoss: 0.266513\n",
      "Train Epoch: 6 [46080/60000 (77%)]\tLoss: 0.232644\n",
      "Train Epoch: 6 [46720/60000 (78%)]\tLoss: 0.249963\n",
      "Train Epoch: 6 [47360/60000 (79%)]\tLoss: 0.162949\n",
      "Train Epoch: 6 [48000/60000 (80%)]\tLoss: 0.176588\n",
      "Train Epoch: 6 [48640/60000 (81%)]\tLoss: 0.160841\n",
      "Train Epoch: 6 [49280/60000 (82%)]\tLoss: 0.052282\n",
      "Train Epoch: 6 [49920/60000 (83%)]\tLoss: 0.168723\n",
      "Train Epoch: 6 [50560/60000 (84%)]\tLoss: 0.219859\n",
      "Train Epoch: 6 [51200/60000 (85%)]\tLoss: 0.106203\n",
      "Train Epoch: 6 [51840/60000 (86%)]\tLoss: 0.141815\n",
      "Train Epoch: 6 [52480/60000 (87%)]\tLoss: 0.297247\n",
      "Train Epoch: 6 [53120/60000 (88%)]\tLoss: 0.199213\n",
      "Train Epoch: 6 [53760/60000 (90%)]\tLoss: 0.296792\n",
      "Train Epoch: 6 [54400/60000 (91%)]\tLoss: 0.148392\n",
      "Train Epoch: 6 [55040/60000 (92%)]\tLoss: 0.338303\n",
      "Train Epoch: 6 [55680/60000 (93%)]\tLoss: 0.163463\n",
      "Train Epoch: 6 [56320/60000 (94%)]\tLoss: 0.356118\n",
      "Train Epoch: 6 [56960/60000 (95%)]\tLoss: 0.427417\n",
      "Train Epoch: 6 [57600/60000 (96%)]\tLoss: 0.223731\n",
      "Train Epoch: 6 [58240/60000 (97%)]\tLoss: 0.130532\n",
      "Train Epoch: 6 [58880/60000 (98%)]\tLoss: 0.150179\n",
      "Train Epoch: 6 [59520/60000 (99%)]\tLoss: 0.147129\n",
      "\n",
      "Test set: Avg. loss: 0.0684, Accuracy: 9777/10000 (98%)\n",
      "\n",
      "Train Epoch: 7 [0/60000 (0%)]\tLoss: 0.357730\n",
      "Train Epoch: 7 [640/60000 (1%)]\tLoss: 0.267761\n",
      "Train Epoch: 7 [1280/60000 (2%)]\tLoss: 0.472295\n",
      "Train Epoch: 7 [1920/60000 (3%)]\tLoss: 0.197518\n",
      "Train Epoch: 7 [2560/60000 (4%)]\tLoss: 0.089693\n",
      "Train Epoch: 7 [3200/60000 (5%)]\tLoss: 0.154808\n",
      "Train Epoch: 7 [3840/60000 (6%)]\tLoss: 0.161829\n",
      "Train Epoch: 7 [4480/60000 (7%)]\tLoss: 0.121039\n",
      "Train Epoch: 7 [5120/60000 (9%)]\tLoss: 0.170528\n",
      "Train Epoch: 7 [5760/60000 (10%)]\tLoss: 0.271158\n",
      "Train Epoch: 7 [6400/60000 (11%)]\tLoss: 0.235284\n",
      "Train Epoch: 7 [7040/60000 (12%)]\tLoss: 0.238525\n",
      "Train Epoch: 7 [7680/60000 (13%)]\tLoss: 0.133888\n",
      "Train Epoch: 7 [8320/60000 (14%)]\tLoss: 0.285275\n",
      "Train Epoch: 7 [8960/60000 (15%)]\tLoss: 0.155920\n",
      "Train Epoch: 7 [9600/60000 (16%)]\tLoss: 0.324436\n",
      "Train Epoch: 7 [10240/60000 (17%)]\tLoss: 0.224579\n",
      "Train Epoch: 7 [10880/60000 (18%)]\tLoss: 0.457322\n",
      "Train Epoch: 7 [11520/60000 (19%)]\tLoss: 0.310963\n",
      "Train Epoch: 7 [12160/60000 (20%)]\tLoss: 0.112333\n",
      "Train Epoch: 7 [12800/60000 (21%)]\tLoss: 0.162770\n",
      "Train Epoch: 7 [13440/60000 (22%)]\tLoss: 0.095332\n",
      "Train Epoch: 7 [14080/60000 (23%)]\tLoss: 0.091663\n",
      "Train Epoch: 7 [14720/60000 (25%)]\tLoss: 0.269621\n",
      "Train Epoch: 7 [15360/60000 (26%)]\tLoss: 0.124010\n",
      "Train Epoch: 7 [16000/60000 (27%)]\tLoss: 0.122315\n",
      "Train Epoch: 7 [16640/60000 (28%)]\tLoss: 0.085572\n",
      "Train Epoch: 7 [17280/60000 (29%)]\tLoss: 0.110869\n",
      "Train Epoch: 7 [17920/60000 (30%)]\tLoss: 0.126028\n",
      "Train Epoch: 7 [18560/60000 (31%)]\tLoss: 0.129823\n",
      "Train Epoch: 7 [19200/60000 (32%)]\tLoss: 0.179764\n",
      "Train Epoch: 7 [19840/60000 (33%)]\tLoss: 0.236026\n",
      "Train Epoch: 7 [20480/60000 (34%)]\tLoss: 0.137036\n",
      "Train Epoch: 7 [21120/60000 (35%)]\tLoss: 0.289675\n",
      "Train Epoch: 7 [21760/60000 (36%)]\tLoss: 0.108866\n",
      "Train Epoch: 7 [22400/60000 (37%)]\tLoss: 0.109109\n",
      "Train Epoch: 7 [23040/60000 (38%)]\tLoss: 0.283623\n",
      "Train Epoch: 7 [23680/60000 (39%)]\tLoss: 0.419420\n",
      "Train Epoch: 7 [24320/60000 (41%)]\tLoss: 0.251385\n",
      "Train Epoch: 7 [24960/60000 (42%)]\tLoss: 0.367221\n",
      "Train Epoch: 7 [25600/60000 (43%)]\tLoss: 0.198030\n",
      "Train Epoch: 7 [26240/60000 (44%)]\tLoss: 0.104363\n",
      "Train Epoch: 7 [26880/60000 (45%)]\tLoss: 0.246793\n",
      "Train Epoch: 7 [27520/60000 (46%)]\tLoss: 0.171081\n",
      "Train Epoch: 7 [28160/60000 (47%)]\tLoss: 0.339708\n",
      "Train Epoch: 7 [28800/60000 (48%)]\tLoss: 0.298794\n",
      "Train Epoch: 7 [29440/60000 (49%)]\tLoss: 0.127214\n",
      "Train Epoch: 7 [30080/60000 (50%)]\tLoss: 0.045426\n",
      "Train Epoch: 7 [30720/60000 (51%)]\tLoss: 0.136348\n",
      "Train Epoch: 7 [31360/60000 (52%)]\tLoss: 0.173292\n",
      "Train Epoch: 7 [32000/60000 (53%)]\tLoss: 0.276835\n",
      "Train Epoch: 7 [32640/60000 (54%)]\tLoss: 0.178851\n",
      "Train Epoch: 7 [33280/60000 (55%)]\tLoss: 0.148724\n",
      "Train Epoch: 7 [33920/60000 (57%)]\tLoss: 0.210143\n",
      "Train Epoch: 7 [34560/60000 (58%)]\tLoss: 0.180793\n",
      "Train Epoch: 7 [35200/60000 (59%)]\tLoss: 0.170211\n",
      "Train Epoch: 7 [35840/60000 (60%)]\tLoss: 0.232166\n",
      "Train Epoch: 7 [36480/60000 (61%)]\tLoss: 0.131471\n",
      "Train Epoch: 7 [37120/60000 (62%)]\tLoss: 0.123881\n",
      "Train Epoch: 7 [37760/60000 (63%)]\tLoss: 0.147539\n",
      "Train Epoch: 7 [38400/60000 (64%)]\tLoss: 0.248239\n",
      "Train Epoch: 7 [39040/60000 (65%)]\tLoss: 0.220349\n",
      "Train Epoch: 7 [39680/60000 (66%)]\tLoss: 0.282517\n",
      "Train Epoch: 7 [40320/60000 (67%)]\tLoss: 0.342114\n",
      "Train Epoch: 7 [40960/60000 (68%)]\tLoss: 0.342570\n",
      "Train Epoch: 7 [41600/60000 (69%)]\tLoss: 0.192487\n",
      "Train Epoch: 7 [42240/60000 (70%)]\tLoss: 0.220648\n",
      "Train Epoch: 7 [42880/60000 (71%)]\tLoss: 0.205784\n",
      "Train Epoch: 7 [43520/60000 (72%)]\tLoss: 0.183499\n",
      "Train Epoch: 7 [44160/60000 (74%)]\tLoss: 0.369418\n",
      "Train Epoch: 7 [44800/60000 (75%)]\tLoss: 0.164589\n",
      "Train Epoch: 7 [45440/60000 (76%)]\tLoss: 0.277267\n",
      "Train Epoch: 7 [46080/60000 (77%)]\tLoss: 0.156698\n",
      "Train Epoch: 7 [46720/60000 (78%)]\tLoss: 0.193013\n",
      "Train Epoch: 7 [47360/60000 (79%)]\tLoss: 0.234329\n",
      "Train Epoch: 7 [48000/60000 (80%)]\tLoss: 0.143727\n",
      "Train Epoch: 7 [48640/60000 (81%)]\tLoss: 0.220896\n",
      "Train Epoch: 7 [49280/60000 (82%)]\tLoss: 0.103677\n",
      "Train Epoch: 7 [49920/60000 (83%)]\tLoss: 0.039106\n",
      "Train Epoch: 7 [50560/60000 (84%)]\tLoss: 0.149649\n",
      "Train Epoch: 7 [51200/60000 (85%)]\tLoss: 0.200419\n",
      "Train Epoch: 7 [51840/60000 (86%)]\tLoss: 0.134908\n",
      "Train Epoch: 7 [52480/60000 (87%)]\tLoss: 0.206055\n",
      "Train Epoch: 7 [53120/60000 (88%)]\tLoss: 0.064043\n",
      "Train Epoch: 7 [53760/60000 (90%)]\tLoss: 0.150485\n",
      "Train Epoch: 7 [54400/60000 (91%)]\tLoss: 0.227415\n",
      "Train Epoch: 7 [55040/60000 (92%)]\tLoss: 0.265365\n",
      "Train Epoch: 7 [55680/60000 (93%)]\tLoss: 0.254839\n",
      "Train Epoch: 7 [56320/60000 (94%)]\tLoss: 0.436332\n",
      "Train Epoch: 7 [56960/60000 (95%)]\tLoss: 0.205969\n",
      "Train Epoch: 7 [57600/60000 (96%)]\tLoss: 0.284194\n",
      "Train Epoch: 7 [58240/60000 (97%)]\tLoss: 0.091890\n",
      "Train Epoch: 7 [58880/60000 (98%)]\tLoss: 0.053710\n",
      "Train Epoch: 7 [59520/60000 (99%)]\tLoss: 0.260866\n",
      "\n",
      "Test set: Avg. loss: 0.0609, Accuracy: 9806/10000 (98%)\n",
      "\n",
      "Train Epoch: 8 [0/60000 (0%)]\tLoss: 0.174914\n",
      "Train Epoch: 8 [640/60000 (1%)]\tLoss: 0.215577\n",
      "Train Epoch: 8 [1280/60000 (2%)]\tLoss: 0.189811\n",
      "Train Epoch: 8 [1920/60000 (3%)]\tLoss: 0.156153\n",
      "Train Epoch: 8 [2560/60000 (4%)]\tLoss: 0.248653\n",
      "Train Epoch: 8 [3200/60000 (5%)]\tLoss: 0.092860\n",
      "Train Epoch: 8 [3840/60000 (6%)]\tLoss: 0.089348\n",
      "Train Epoch: 8 [4480/60000 (7%)]\tLoss: 0.119318\n",
      "Train Epoch: 8 [5120/60000 (9%)]\tLoss: 0.243211\n",
      "Train Epoch: 8 [5760/60000 (10%)]\tLoss: 0.148341\n",
      "Train Epoch: 8 [6400/60000 (11%)]\tLoss: 0.144803\n",
      "Train Epoch: 8 [7040/60000 (12%)]\tLoss: 0.411849\n",
      "Train Epoch: 8 [7680/60000 (13%)]\tLoss: 0.258932\n",
      "Train Epoch: 8 [8320/60000 (14%)]\tLoss: 0.367055\n",
      "Train Epoch: 8 [8960/60000 (15%)]\tLoss: 0.280826\n",
      "Train Epoch: 8 [9600/60000 (16%)]\tLoss: 0.109362\n",
      "Train Epoch: 8 [10240/60000 (17%)]\tLoss: 0.134814\n",
      "Train Epoch: 8 [10880/60000 (18%)]\tLoss: 0.256609\n",
      "Train Epoch: 8 [11520/60000 (19%)]\tLoss: 0.214486\n",
      "Train Epoch: 8 [12160/60000 (20%)]\tLoss: 0.201883\n",
      "Train Epoch: 8 [12800/60000 (21%)]\tLoss: 0.170869\n",
      "Train Epoch: 8 [13440/60000 (22%)]\tLoss: 0.145703\n",
      "Train Epoch: 8 [14080/60000 (23%)]\tLoss: 0.385199\n",
      "Train Epoch: 8 [14720/60000 (25%)]\tLoss: 0.591173\n",
      "Train Epoch: 8 [15360/60000 (26%)]\tLoss: 0.173444\n",
      "Train Epoch: 8 [16000/60000 (27%)]\tLoss: 0.292946\n",
      "Train Epoch: 8 [16640/60000 (28%)]\tLoss: 0.085993\n",
      "Train Epoch: 8 [17280/60000 (29%)]\tLoss: 0.150735\n",
      "Train Epoch: 8 [17920/60000 (30%)]\tLoss: 0.127618\n",
      "Train Epoch: 8 [18560/60000 (31%)]\tLoss: 0.204123\n",
      "Train Epoch: 8 [19200/60000 (32%)]\tLoss: 0.163705\n",
      "Train Epoch: 8 [19840/60000 (33%)]\tLoss: 0.137806\n",
      "Train Epoch: 8 [20480/60000 (34%)]\tLoss: 0.132885\n",
      "Train Epoch: 8 [21120/60000 (35%)]\tLoss: 0.234765\n",
      "Train Epoch: 8 [21760/60000 (36%)]\tLoss: 0.184743\n",
      "Train Epoch: 8 [22400/60000 (37%)]\tLoss: 0.168048\n",
      "Train Epoch: 8 [23040/60000 (38%)]\tLoss: 0.120517\n",
      "Train Epoch: 8 [23680/60000 (39%)]\tLoss: 0.163631\n",
      "Train Epoch: 8 [24320/60000 (41%)]\tLoss: 0.071114\n",
      "Train Epoch: 8 [24960/60000 (42%)]\tLoss: 0.276461\n",
      "Train Epoch: 8 [25600/60000 (43%)]\tLoss: 0.223477\n",
      "Train Epoch: 8 [26240/60000 (44%)]\tLoss: 0.186653\n",
      "Train Epoch: 8 [26880/60000 (45%)]\tLoss: 0.262525\n",
      "Train Epoch: 8 [27520/60000 (46%)]\tLoss: 0.254368\n",
      "Train Epoch: 8 [28160/60000 (47%)]\tLoss: 0.122469\n",
      "Train Epoch: 8 [28800/60000 (48%)]\tLoss: 0.119040\n",
      "Train Epoch: 8 [29440/60000 (49%)]\tLoss: 0.097109\n",
      "Train Epoch: 8 [30080/60000 (50%)]\tLoss: 0.150387\n",
      "Train Epoch: 8 [30720/60000 (51%)]\tLoss: 0.041831\n",
      "Train Epoch: 8 [31360/60000 (52%)]\tLoss: 0.256640\n",
      "Train Epoch: 8 [32000/60000 (53%)]\tLoss: 0.169305\n",
      "Train Epoch: 8 [32640/60000 (54%)]\tLoss: 0.110510\n",
      "Train Epoch: 8 [33280/60000 (55%)]\tLoss: 0.262928\n",
      "Train Epoch: 8 [33920/60000 (57%)]\tLoss: 0.177113\n",
      "Train Epoch: 8 [34560/60000 (58%)]\tLoss: 0.236888\n",
      "Train Epoch: 8 [35200/60000 (59%)]\tLoss: 0.208173\n",
      "Train Epoch: 8 [35840/60000 (60%)]\tLoss: 0.335361\n",
      "Train Epoch: 8 [36480/60000 (61%)]\tLoss: 0.133905\n",
      "Train Epoch: 8 [37120/60000 (62%)]\tLoss: 0.198523\n",
      "Train Epoch: 8 [37760/60000 (63%)]\tLoss: 0.199438\n",
      "Train Epoch: 8 [38400/60000 (64%)]\tLoss: 0.178092\n",
      "Train Epoch: 8 [39040/60000 (65%)]\tLoss: 0.259148\n",
      "Train Epoch: 8 [39680/60000 (66%)]\tLoss: 0.134136\n",
      "Train Epoch: 8 [40320/60000 (67%)]\tLoss: 0.202629\n",
      "Train Epoch: 8 [40960/60000 (68%)]\tLoss: 0.175380\n",
      "Train Epoch: 8 [41600/60000 (69%)]\tLoss: 0.228779\n",
      "Train Epoch: 8 [42240/60000 (70%)]\tLoss: 0.291154\n",
      "Train Epoch: 8 [42880/60000 (71%)]\tLoss: 0.227479\n",
      "Train Epoch: 8 [43520/60000 (72%)]\tLoss: 0.193981\n",
      "Train Epoch: 8 [44160/60000 (74%)]\tLoss: 0.160419\n",
      "Train Epoch: 8 [44800/60000 (75%)]\tLoss: 0.397881\n",
      "Train Epoch: 8 [45440/60000 (76%)]\tLoss: 0.117309\n",
      "Train Epoch: 8 [46080/60000 (77%)]\tLoss: 0.122763\n",
      "Train Epoch: 8 [46720/60000 (78%)]\tLoss: 0.108116\n",
      "Train Epoch: 8 [47360/60000 (79%)]\tLoss: 0.140509\n",
      "Train Epoch: 8 [48000/60000 (80%)]\tLoss: 0.142945\n",
      "Train Epoch: 8 [48640/60000 (81%)]\tLoss: 0.123217\n",
      "Train Epoch: 8 [49280/60000 (82%)]\tLoss: 0.164619\n",
      "Train Epoch: 8 [49920/60000 (83%)]\tLoss: 0.344959\n",
      "Train Epoch: 8 [50560/60000 (84%)]\tLoss: 0.155319\n",
      "Train Epoch: 8 [51200/60000 (85%)]\tLoss: 0.094737\n",
      "Train Epoch: 8 [51840/60000 (86%)]\tLoss: 0.305433\n",
      "Train Epoch: 8 [52480/60000 (87%)]\tLoss: 0.133911\n",
      "Train Epoch: 8 [53120/60000 (88%)]\tLoss: 0.098609\n",
      "Train Epoch: 8 [53760/60000 (90%)]\tLoss: 0.270338\n",
      "Train Epoch: 8 [54400/60000 (91%)]\tLoss: 0.418332\n",
      "Train Epoch: 8 [55040/60000 (92%)]\tLoss: 0.064530\n",
      "Train Epoch: 8 [55680/60000 (93%)]\tLoss: 0.119954\n",
      "Train Epoch: 8 [56320/60000 (94%)]\tLoss: 0.099420\n",
      "Train Epoch: 8 [56960/60000 (95%)]\tLoss: 0.195249\n",
      "Train Epoch: 8 [57600/60000 (96%)]\tLoss: 0.213898\n",
      "Train Epoch: 8 [58240/60000 (97%)]\tLoss: 0.278254\n",
      "Train Epoch: 8 [58880/60000 (98%)]\tLoss: 0.071050\n",
      "Train Epoch: 8 [59520/60000 (99%)]\tLoss: 0.393138\n",
      "\n",
      "Test set: Avg. loss: 0.0575, Accuracy: 9815/10000 (98%)\n",
      "\n"
     ]
    }
   ],
   "source": [
    "for i in range(4,9):\n",
    "  test_counter.append(i*len(train_loader.dataset))\n",
    "  train(i)\n",
    "  test()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0, 0.5, 'negative log likelihood loss')"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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qlRR+/fff//ZupHQjs6dO8vgwYNVG0855RS55557Qj5jds+hHSNHjpQuXbqo76lWrZrqDx28xvK8efPKBRdcIO+//776HI6lHXjv1ltvVSIN+4Rj+v3336v3du7cqc6VZ599NmP9RYsWKaFoWM4gQjt16iSlSpVSwrBx48byzTffhHwH9uXpp59W/YZ1KlasqNqK7eOzWFa3bl1Zvnx5pmM+adKkjH1q27atbNmyRZxAH+FcxPo1atSQ119/PUTk4jxEn+N9tGPQoEG228K5gHMJ5yTacvbZZ8tvv/2W8f7kyZPlrLPOUtvCcX/iiScyzrVwfaufFx9++KHqI/w+rrrqKtm3b5/jPhKSJXgu8UuIj6qgFy5cOPD4448Hfv3118D7778fyJYtW0ZV+o0bN0LBBL777ruMz/zzzz9qGapuA/zH62bNmgUWLFgQWLlyZaBq1apq223atFGv582bFzjllFMCzz33XMh3FyxYUFVh/+WXXwIfffSRqrz91ltvZaxz6623Blq0aKE+j8rhL774YiBPnjyqrQCVvnPlyqXWWbhwodrOgQMHMu3n77//rraNCt9r1qwJTJw4UVUTHzhwoHp/9+7dgSeffDJQrlw5VfV7x44dmbZx+PDhwLBhw1R/YR089u3bp96rWLGiWj548GDVTqPK+VNPPaXahX6cMmVKoFSpUoHnn38+Y5v4/nr16mW8vuGGG9R27rzzTtXOzz//PFOf4LteeumljNfoe7T7k08+Caxbty7Qo0cP1a9//fWXen/Dhg2qjx544AHVP59++qmqxo7P4Vja0apVq0CHDh0C3377repvVF7HMTS2+8UXX6jt4v29e/eqyuu9e/fO+PyqVasCb775ZuCHH35Qn+/fv38gb968gd9++y1kX4oXL67Wwzp33XWX2v+LL744MHbs2MDatWsDnTt3Dpx55pmB48ePhxzzRo0aBRYtWhRYvny5quiOc8CuX3FuoRL9+PHjVX/gP7531KhR6n2cV+XLl1fnGSrOz58/X/WnFag+X6RIEdWfOM4///yz2o6xX9gG9gHL1q9fr35LlSpVUr8xt32L9uMYXnbZZar/sM3SpUsHHnnkEdvjRUhWQdFE0hYIl3POOSdkWePGjQN9+/b1LJq++eabjHUGDRqklmHQMLjjjjsCbdu2DflufTAE+F4sAxiEcuTIEdi6dWtI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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig = plt.figure()\n",
    "plt.plot(train_counter, train_losses, color='blue')\n",
    "plt.scatter(test_counter, test_losses, color='red')\n",
    "plt.legend(['Train Loss', 'Test Loss'], loc='upper right')\n",
    "plt.xlabel('number of training examples seen')\n",
    "plt.ylabel('negative log likelihood loss')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 两次卷积"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [],
   "source": [
    "n_epochs = 3\n",
    "batch_size_train = 64\n",
    "batch_size_test = 1000\n",
    "learning_rate = 0.01\n",
    "momentum = 0.5\n",
    "log_interval = 10\n",
    "random_seed = 1\n",
    "torch.backends.cudnn.enabled = False\n",
    "torch.manual_seed(random_seed)\n",
    "\n",
    "train_loader = torch.utils.data.DataLoader(\n",
    "  torchvision.datasets.MNIST('/files/', train=True, download=True,\n",
    "                             transform=torchvision.transforms.Compose([\n",
    "                               torchvision.transforms.ToTensor(),\n",
    "                               torchvision.transforms.Normalize(\n",
    "                                 (0.1307,), (0.3081,))\n",
    "                             ])),\n",
    "  batch_size=batch_size_train, shuffle=True)\n",
    "test_loader = torch.utils.data.DataLoader(\n",
    "  torchvision.datasets.MNIST('/files/', train=False, download=True,\n",
    "                             transform=torchvision.transforms.Compose([\n",
    "                               torchvision.transforms.ToTensor(),\n",
    "                               torchvision.transforms.Normalize(\n",
    "                                 (0.1307,), (0.3081,))\n",
    "                             ])),\n",
    "  batch_size=batch_size_test, shuffle=True)\n",
    "\n",
    "examples = enumerate(test_loader)\n",
    "batch_idx, (example_data, example_targets) = next(examples)\n",
    "\n",
    "class Net(nn.Module):\n",
    "    def __init__(self):\n",
    "        super(Net, self).__init__()\n",
    "        self.conv1 = nn.Conv2d(1, 10, kernel_size=5)\n",
    "        self.conv2 = nn.Conv2d(10, 20, kernel_size=5)\n",
    "        self.conv2_drop = nn.Dropout2d()\n",
    "        self.fc1 = nn.Linear(320, 50)\n",
    "        self.fc2 = nn.Linear(50, 10)\n",
    "    def forward(self, x):\n",
    "        x = F.relu(F.max_pool2d(self.conv1(x), 2))\n",
    "        conv1_out = x #第一次卷积\n",
    "        x = F.relu(F.max_pool2d(self.conv2_drop(self.conv2(x)), 2)) \n",
    "        conv2_out = x #第二次卷积\n",
    "        x = x.view(-1, 320)\n",
    "        x = F.relu(self.fc1(x))\n",
    "        x = F.dropout(x, training=self.training)\n",
    "        x = self.fc2(x)\n",
    "        return x, conv1_out, conv2_out#F.log_softmax(x)\n",
    "    \n",
    "network = Net()\n",
    "optimizer = optim.SGD(network.parameters(), lr=learning_rate,\n",
    "                      momentum=momentum)\n",
    "\n",
    "train_losses = []\n",
    "train_counter = []\n",
    "test_losses = []\n",
    "test_counter = [i*len(train_loader.dataset) for i in range(n_epochs + 1)]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [],
   "source": [
    "def train(epoch):\n",
    "  network.train()\n",
    "  for batch_idx, (data, target) in enumerate(train_loader):\n",
    "    optimizer.zero_grad()\n",
    "    output = network(data)\n",
    "    loss = F.nll_loss(output, target)\n",
    "    loss.backward()\n",
    "    optimizer.step()\n",
    "    if batch_idx % log_interval == 0:\n",
    "      print('Train Epoch: {} [{}/{} ({:.0f}%)]\\tLoss: {:.6f}'.format(\n",
    "        epoch, batch_idx * len(data), len(train_loader.dataset),\n",
    "        100. * batch_idx / len(train_loader), loss.item()))\n",
    "      train_losses.append(loss.item())\n",
    "      train_counter.append(\n",
    "        (batch_idx*64) + ((epoch-1)*len(train_loader.dataset)))\n",
    "      torch.save(network.state_dict(), '/homework/model.pth')\n",
    "      torch.save(optimizer.state_dict(), '/homework/optimizer.pth')\n",
    "def test():\n",
    "  network.eval()\n",
    "  test_loss = 0\n",
    "  correct = 0\n",
    "  with torch.no_grad():\n",
    "    for data, target in test_loader:\n",
    "      output,conv1_output, conv2_output = network(data)\n",
    "      test_loss += F.nll_loss(output, target, size_average=False).item()\n",
    "      pred = output.data.max(1, keepdim=True)[1]\n",
    "      correct += pred.eq(target.data.view_as(pred)).sum()\n",
    "  test_loss /= len(test_loader.dataset)\n",
    "  test_losses.append(test_loss)\n",
    "  print('\\nTest set: Avg. loss: {:.4f}, Accuracy: {}/{} ({:.0f}%)\\n'.format(\n",
    "    test_loss, correct, len(test_loader.dataset),\n",
    "    100. * correct / len(test_loader.dataset)))\n",
    "  return conv1_output, conv2_output"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "Test set: Avg. loss: -0.0071, Accuracy: 924/10000 (9%)\n",
      "\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAABiEAAACtCAYAAADWI9yPAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjEsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvc2/+5QAAAAlwSFlzAAAPYQAAD2EBqD+naQAAKDtJREFUeJzt3Qm0nePZP+A380gSkRmJKRIiMaVKUEWooYhZWtLPUCqoourDUuOHqqIoVcpHI+bW0EWWuYZUa4yYmoSIhEgkkekkkWH/17O/lfyDSO6deHLOca5rrbPIPr/97nfvc+93eO53qFcqlUoFAAAAAADAN6z+Nz1BAAAAAACARBMCAAAAAADIQhMCAAAAAADIQhMCAAAAAADIQhMCAAAAAADIQhMCAAAAAADIQhMCAAAAAADIQhMCAAAAAADIQhMCAAAAAADIolY3IerVq1eceOKJxbdFej/nnXdedc8Gy6HmqA7qjuqg7ljd1BzVQd1RHdQdq5uaozqoO1Y3NVez1cgmxJgxY4rjjjuu2GCDDYqmTZsWa665ZtGvX7/i6quvLubMmVPds1cj3HzzzUXPnj3Ln8/GG29cXHPNNdU9S7Wamlu+66+/vjj44IOL9dZbr7wQ/MlPflLds/StoO6+3ocfflicf/75xXe+852iTZs2xdprr13svPPOxeOPP17ds1brqbuvl97/0UcfXfTq1ato1apV0bJly6JPnz7lz2b+/PnVPXu1lpqLe+6558rr2fTz6aefVvfs1GrqbvkW19mXfy699NLqnrVaTd2t2CeffFL+jLp06VL+jLp161Ze97Jy1NzXu/XWW792WZd+hgwZUt2zWGupu+WbPn16ccYZZ5TH6po1a1Z07dq1vJwbN25cdc9araXmVrxu/a//+q+iffv25ZrbaqutinvuuaeoaRoWNczf//738mBnkyZNiiOPPLI8EPD555+Xd8p++ctfFm+++WZx4403FnXZH//4x+L4448vDjzwwOLUU08tnn322eLkk08uqqqqil/96lfVPXu1jppbscsuu6yYOXNmeUD4448/ru7Z+VZQd8v3wAMPlOtu//33LwYNGlQsWLCguO2224r+/fsXf/7zn8srWCqn7pYvbcCmz2CvvfYqD4rUr1+/eOGFF4pf/OIXxYsvvljccccd1T2LtY6ai1u0aFFx0kknFS1atChmz55d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mzpRX+5OXXPNNV9ZKOSQTjdNX5Zhw4Z95XepuCtdAKWjgNMphNdff/0XHk//bt68ebH33nuv8jzXJWqO6qDuYi6//PLit7/9bfn61Om61awadbdiaRDky+8luemmm8r/3WabbVZhbuseNbdi6VqtX/459NBDy79Lp/FfeeWV39i81xXqbsUmT578lcfSpQ5Sw3/ttddeMlhMnLpbsZ133rl8Jn86szUN9Cx91HB6P+moUOLUXGVSsz9dJsWl5laNuluxdNR5ei933333VxphSbpXBHFqbuWkSz7dcMMN5SaOMyGW0w1KK4e089WzZ8/iyCOPLN8gLR0dka4RmW7eka6hVqn0od9+++3l02vSTULSHzt1hNJpn7mlo3gffPDB8jykeU8b9enmlm+88Ua585ZOvU8b+5VcS/PCCy8sBg8eXD59f4899iifVviXv/ylfNOb1KAgTs3FPPTQQ+XTuhZ38NP16y666KLyv9MpX+kadMSpuxVLA3Fpg2PjjTcuf0ZpGbe0tKP65dP5WT51t2KpztLG2v77719ssMEG5UG5tHGYblL9wx/+0OXAKqTmVizV2pctPvMhnapf6foadRdx3XXXlW+UmZZraVDu448/Lv785z+XL1eS3mM6ko7KqLsVa9KkSfkAk3Tk6U477VS+D0SquTR4lG7QecABB2R9P982ai4uXcol7b+eeeaZX7ixLJVTdyuWppEOpEuXcH311VeLzTbbrHyj43RQU/r/AQMGZH0/3zZqLia9hzRGnLbr3n///fKB6ml8OO3b1iQ1qgmxeEAzrSDSBkq69nL64NIGSxrkTKfJpGuDVypt2KQu1+KjLtKNOlJxpQH83NLZCc8880z5ppbpy5GOakvXNUudqPPPP79c8JU64YQTytcxTJ9HKtx0/dZ0pJwjhVeOmlux++67r/jf//3fJf9OK9P0k6yzzjqaECtB3S3f4qZX6uCnndQve+qppzQhVoK6W750dFzamE1HKqUjbRo2bFhssskmxe9+97vydUOpnJqjOqi75UvznpZ1aUAk3VMuHWH4ne98p9yI0GxdeepuxdLgUWpyXXrppeVBmNatW5cH6tJrfN11tPl6ai4mvZdk4MCB3/Ac103qbvnSIHa6XPq5555bPpgzDQKnx4466qjya2j0V07NrVi6hGu6jHXah00NjHS2RZrW0vcSrgnqlZZ1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r169wtmjjz46y77HeeedF842bdo0Sy136tQpnH3//ffDWVbdlClTwtlSqRTObr/99lnGZCrZ7v/b3/4WzrJsY8aMCWfXW2+9LPumY8eODWfvvPPOLPsTlayPFy5cmGX7sjZwJgQAAAAAAJCFJgQAAAAAAJCFJgQAAAAAAJCFJgQAAAAAAJCFJgQAAAAAAJCFJgQAAAAAAJCFJgQAAAAAAJCFJgQAAAAAAJCFJgQAAAAAAJCFJgQAAAAAAJBFw2hw9uzZ4Yn+5z//CWfnzJkTzp577rnhbLdu3cLZI444osihZ8+e4ey6664bzlZVVYWzzz33XFFXTJgwIZxdY401wtmddtopnG3YMPyVKpo0aVLkMGvWrCzTrSvmzp2bZbrdu3cPZ7fccstwdvr06eFss2bNwtlJkyaFs+PGjQtn+/fvH86+/vrr4ezUqVPD2QULFhS1WdOmTcPZTTbZJJxt1apVOHvMMceEs+uss044u/3222f5Tl188cXh7L777ptlebtw4cKipvn888+zZCsxYMCAcPa9994LZ6+77rpwtnHjxkUOuT4zvqp9+/bhbNu2bcPZd955J8s6q5Jt+RYtWoSzHTp0yLIuHDt2bFGbffzxx1mmu/XWW2dZB4wcOTJLthLbbbddODt48OBw9rPPPgtn77///nD2ySefLGqrzp07h7Prr79+OHvYYYcVOZx99tnh7BtvvBHOdu3aNctysZLv/5prrhnO1iWlUinLdI866qgs+7EXXnhhllpq3rx5ODt58uRwti7597//Hc6OHz8+nN18883D2ddeey3LuGGfPn3C2SeeeCKcvf3227PsewwfPjycvemmm4pvijMhAAAAAACALDQhAAAAAACALDQhAAAAAACALDQhAAAAAACALDQhAAAAAACALDQhAAAAAACALDQhAAAAAACALDQhAAAAAACALDQhAAAAAACALDQhAAAAAACALBoW1WzXXXcNZ9u3bx/OTp48ucihTZs24eybb74Zzr7yyivhbO/evcPZOXPmhLPNmjUr6oo+ffqEs82bNw9n77rrrnB29OjRWeahqqoqnGX12XTTTbNM99FHHw1np0yZkmWZ9P3vfz+c/fjjj8PZJk2ahLN1yfz588PZtddeO5w966yzihyOO+64cHbNNdcMZxs3bhzO3nzzzeHsHnvsEc7ec8894Wxd8qtf/SqcPeCAA8LZp556KsuysRKV1N1BBx0Uzg4bNiycnTlzZjhbV/Tt2zecXXfddcPZhQsXhrNDhgwJZzfYYINwtlevXuHsggULwtl33nknnK1fP37c2qJFi4q6omPHjlm2qypZZ1VivfXWC2f322+/cHb8+PFZtu222mqrcPbFF18saqt69eqFsw8++GA4+/TTTxc5TJ8+Pcu+8bx588LZjTbaKJy9+OKLw9mxY8eGs507dw5n65JK9j3WX3/9cHbMmDHh7KhRo8LZ2bNnh7OXXHJJONu0adNw9qqrrgpn33rrraI2a9CgQTg7YMCAcPbyyy8vcjj99NPD2VmzZoWzt956a5bsaaedFs4ec8wx4ex9991XfFOcCQEAAAAAAGShCQEAAAAAAGShCQEAAAAAAGShCQEAAAAAAGShCQEAAAAAAGShCQEAAAAAAGShCQEAAAAAAGShCQEAAAAAAGShCQEAAAAAAGShCQEAAAAAAGTRsKhmTZs2DWdnzpwZzg4cOLDIYe+99w5n11133XB26NCh4Wznzp3D2REjRoSzdcnGG28czm655Zbh7MUXX1zk0L59+3B2o402Cmd33XXXcPaaa64JZz/66KNwtq749NNPs0x3/fXXD2dvu+22cPbWW28NZ3v06BHO/vWvfw1nDzzwwHB2l112CWdnzZpV1GZz5swJZ0ePHh3O3n333UUOLVu2DGe/973vhbPnn39+OHvllVeGs4MGDQpn+/XrF84OHz68qCvWWmutcPbdd98NZ3/zm98UOWyzzTbh7O9///twdsyYMVm2Nc4+++xwtq5o3bp1ODtv3rws64u2bduGs927dw9ne/fuHc526dIlnH3zzTfD2auvvjpL3ddEDRo0CGc/+OCDcHbKlCnh7NixY4scrr322izr41atWoWzW2yxRTjbsWPHcLaqqqqoC9t1Dz74YJZ56NSpUzh74oknhrMjR44MZzfffPNwtn79+LG0hx56aDg7fvz4cJZlmz9/fpb15oIFC7Ls/9x7773hbKNGjcLZevXqhbNHHXVUOHv66acXtVkl22CVjIFVUh+VGDVqVDh7xx13hLNdu3bNsq1xxRVXhLN//OMfw9levXoV3xRnQgAAAAAAAFloQgAAAAAAAFloQgAAAAAAAFloQgAAAAAAAFloQgAAAAAAAFloQgAAAAAAAFloQgAAAAAAAFloQgAA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",
      "text/plain": [
       "<Figure size 2000x400 with 10 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAADC8AAACsCAYAAADhGWcdAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjEsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvc2/+5QAAAAlwSFlzAAAPYQAAD2EBqD+naQAAKwBJREFUeJzt3QmUVNWZB/ALoiZqiIjGJYniLmpUFI2Dxkk04hYQQ3RwX6IYxV2TQRSJYlziaDRuaDRGlBiDGyNEiRsxDsYMKu5LRBziYHAhLgO415zveaplk65u69Xr5v1+5/QBqqvr3Sr+XfXevfe7t0OlUqkkAAAAAAAAAAAAAACAnHTM64EBAAAAAAAAAAAAAACC4gUAAAAAAAAAAAAAACBXihcAAAAAAAAAAAAAAIBcKV4AAAAAAAAAAAAAAABypXgBAAAAAAAAAAAAAADIleIFAAAAAAAAAAAAAAAgV4oXAAAAAAAAAAAAAACAXCleAAAAAAAAAAAAAAAAcqV4AQAAAAAAAAAAAAAAyFW7LV7o0KFDOuqoo9LiIp7PT3/606KbwWeQNxpN5mgkeaOR5I1GkzkaSd5oJHmj0WSORpI38iJbNJK80WgyRyPJG40kbzSSvNFoMkcjyRuNJG80msy1L22ueGHKlCnp8MMPT2uttVb6whe+kDp37py22WabdNFFF6U5c+YU3bw24eqrr07du3fPXp911103XXzxxUU3qd2St0W7/PLL05577plWX3317M3woIMOKrpJ7Z7Mfba///3v6fTTT09bbbVV6tKlS1pxxRXTt7/97XT33XcX3bR2S94+Wzz/H/7wh2njjTdOX/7yl9Nyyy2XNt100+y1+eCDD4puXrskb7V74IEHss/V+Hr99deLbk67JXOLVs3Y/F/nnHNO0U1rl+SteTNmzMheo69+9avZa9StW7fss5aWk7fP9pvf/OYz39/ia9SoUUU3sV2SuUV766230k9+8pOsD+6LX/xiWmONNbL3t2nTphXdtHZJ3pr/PD344IPTV77ylSxvm2++eRo9enTRzWoXZKt+/bxvvvlmGjhwYFpppZXSsssum77zne+kRx55pKHtbevkrT55e+WVV9LgwYOzjH3pS1/K7jthwoSGt7c9kLn6ZO6ee+5JhxxySFpvvfXSMsssk72ehx56aJZFPiVv9cnb/fffn/r27Zu+/vWvZ6/jKqusknbeeef0X//1Xw1vc1smb/mM1R922GHZ/b/3ve/l3sb2RN7qk7dF9c/94x//aHi72zKZq+97XMwb2X777bOx/bh+2GKLLdKNN97YsPa2dfJWn7zFHKXPeo9bcsklG97utkre6vf+9vDDD2fnbHG9EPOWNtlkk/TLX/4yffTRRw1tc1snc/XL3F133ZW23XbbrF8k5mf+4Ac/SC+99FIqQqfUhowbNy57EZdeeul0wAEHZBMK33///WyC149//OP01FNPpSuvvDKV2RVXXJF+9KMfpf79+6cTTjgh/fnPf07HHHNMmj17dvr3f//3opvXrshb884999z0zjvvZJPJdd5+fjK3aGPGjMky169fv3TggQemDz/8MI0cOTLtuOOO6de//nU2eE/t5G3R4uQ1XoNdd901m1zZsWPHNHHixHT88cenhx56KP32t78tuontirzV7uOPP05HH310NgFk1qxZRTen3ZK52sRnaLw+c+vRo0dh7Wmv5K22ItToIApxvRoFDNOnT09//etfi25auyNvi7bddtul6667boHbf/GLX6THHnss7bDDDoW0qz2TuebP3eLz9Omnn05HHnlkNtHthRdeSJdddlkaP358euaZZ7LBUmojb4v29ttvZ4MGUcBw7LHHZgNWv//979Nee+2VFWfts88+RTexzZKt+vXzxvvebrvtln2uxmsXi4vEe14M3sdgahRylZ281S9vzz33XHbfyNU3vvGN9OCDDza0ne2FzNUvczGOOnPmzOz1jNy9+OKL6ZJLLkljx45NkydPzj57y07e6pe3559/Pht3iH6SyNY///nPdP3112fXtfE6RyFD2clbPmP1kyZNyiaXx6QuPiVv9c/bGWeckdZcc815blt++eVzbGH7InP1zdw111yTLSYS/XRnnXVWWmKJJbLriRibQN7qmbdTTjklK3CeW4zpxzld7969G9DStk/e6pe36Gvr1atXdn0a16sxmfyOO+7I+oZjsn5MzEfm6pm56P/Yfffds0WTYtHLGJOInMW4xKOPPpotZlPK4oWpU6emAQMGZKuX3XvvvWnVVVdt+t6gQYOygcEIYpnFRMv4kIzBg5tuuqmpaj4GFIYPH56thhTVMDRP3mrzpz/9qakiK6r7aD2Za16ssBUrV8agaFVcAGy22WbptNNOU7zQAvLWvBVWWCH95S9/mee2yFus1BADVhdccIHBqhrJW8vERVN0pEWnh4vN1pG52sUEy/3226/oZrRr8labWOmiU6dO6b//+79T165di25OuyVvzYsVVeJr/r6SmFQeq245f2sZmWteXDPEe1tcI8RrUrX++utnq/bGim977LFHoW1sL+SttkVr4nWIVaHjPS0cccQRaeutt04nnnhitgLSUkstVXQz2xzZqm8/b4w7xOIOseNHZC5EAU1cWwwbNqz0iz3IW33zFiulvvHGG1k/XWQvBqKZl8zVN3PR5xsD8jGhvComkP/rv/5rdr535plnpjKTt/rmLfp/55/4FteucU174YUXlr54Qd7yGauvVCrZwpcxqSuuK/iEvOWTt1122SX17NmzIW1rb2SuvpmL1aDjdYvF4YytLkje6pu3KJCZXxSghn333TeVnbzVN2/RH1zdtS36RqpjrnGNGsWo3vNkrt6ZiyKZuCaNHQGrYw19+vRpKmY4//zzUyN92jtTsJ///Ofp//7v/9LVV189T8iq1llnnayqaH633XZbVk0TlTUbbbRRuvPOO+f5/v/8z/9kHQExqBhbbcdEiugAnX+ri+rWZvEfEzsaVLdEjgHI1157bZ77xgrNsV1LVO9EtUpUrcd/aqwQvrAtlo877rhsS8hoYzyPqHSJgoOWuu+++7KO3Hg+c4tfxKjy84tYO3mrTbzxRzv5/GSuefH85i5cCPGYsTL+yy+/nFUIUht5a71oT/VY1Ebeahcru5166qnZajRWn2k9mWuZmNT77rvvfq7HKDN5a96zzz6brQISK1vE84i8ffDBBy1+HOSttW6//fbsWsHAQcvJXPNi1Zmw8sorz3N79fWK50dt5K15scNutKtauBBicmVMHP/HP/6RDUCwINmqbz9vTCCP97zvf//7TbfFc4ocxq6p7733Xiozeatv3mL3ourgPAsnc/XNXKx4P3fhQvW2yGHsqFV28pb/2GmspBrPy/iDvOWVt9it8sknn0w/+9nPWnW8xZW85ff+Fn1yH330UauOtziTufpmbsSIEVnOYnw1xGsbxVp8Qt7yP4eLhRziOcVq5WUnb/XNW4w/RLvmnzsSr62xh0/IXP0yF/OVYpfxaPvciyRtuummqXv37ul3v/tdarhKG/HVr361stZaa9V8/2j6pptuWll11VUrw4cPr1x44YXZzy+zzDKV119/vel+o0ePzu532mmnVa688srKkCFDKl26dKmsscYalVmzZjXd75prrskes0ePHpXtt9++cvHFF1dOPPHEyhJLLFHZa6+95jl2/Oz6669fWXnllbPHu+SSSyqbb755pUOHDpUnn3yy6X7x+Jtsskmla9eu2f1GjBhROeCAA7L7HXvssQs8n2HDhi3yOZ955pnZ/WbMmDHP7e+9916lY8eOlRNOOKHm16/s5K35vM1v2WWXrRx44IEt+hk+JXMtz1zVPvvskz3vDz/8sFU/X0byVnve4jP0tddeq0ybNq1yyy23VFZZZZWsTR988EHNr1/ZyVvteTvyyCMrG220UfZ+Fj8TPxv5o2VkrrbMxf3i/C0eI/7evXv3yqhRo2p+3fiEvDWft2hT3O/mm2/O2hh/j/btvPPOlalTp9b82iFvrb1m6Nu3b+WLX/xi5e23327xz5adzDWfuThXi8/TDTbYoHLPPfdUXn755cqECRMq3/jGNypbbrml64YWkLfm89a7d+/K6quvvsDtl156afbzZ599ds2vX5nIVn37eddZZ53KLrvsssDtV111VXasxx9/vFJm8pbfuEK8BvH49913X4sef3Enc/mPZb3zzjuVpZZaqjJw4MBK2clbPnl76623suuKZ555pnLyySdnx4m2lJ281T9v0S8SY1zV64Zo92677daiYyyu5K2+eas+n+WWWy77Mz5H+/TpU3n++edbdIzFmczVN3NbbLFFduzf/va32Wsbjx/P+9RTT6189NFHlbKTt3yvGV599dVKp06dKvvuu2+LjrG4krf65u3yyy/PHvPQQw+tPP3005WXXnopu23JJZfMXitkLtUxc9OnT88eL57z/GK8K773yiuvVBqpTRQvxEV7PPndd9+95p+pngS/8MILTbc99thj2e0RkqrZs2cv8LMPPvhgdr+RI0cuELTvfve7lY8//rjp9uOPPz4L25tvvjlP0OK+999//zwfVksvvXQWzqr4BYgwzH+SPnjw4OwxY6JkS4I2aNCg7OcWZqWVVqoMGDBgkT/PJ+RN8UKjyVzrJyL97W9/q3zhC1+o7L///i3+2bKSt5bl7YYbbsjuX/3q2bNn6QfiW0Leas9bPMf42fHjx2f/VrzQOjJXe+Z69eqVXYyPGTMm6+TYeOONs5+97LLLmv1ZPiFvteXtmGOOye4XHSxRsHDjjTdWzjvv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",
      "text/plain": [
       "<Figure size 4000x400 with 20 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "conv1_output, conv2_output = test()\n",
    "# 第一层卷积\n",
    "fig, axes = plt.subplots(1, 10, figsize=(20, 4)) \n",
    "for i in range(10):\n",
    "    ax = axes[i]\n",
    "    ax.imshow(conv1_output[0, i].detach().numpy(), cmap='gray')  \n",
    "    ax.set_title(f'Channel {i}')\n",
    "    ax.axis('off')\n",
    "# 第二层卷积\n",
    "fig, axes = plt.subplots(1, 20, figsize=(40, 4)) \n",
    "for i in range(20):\n",
    "    ax = axes[i]\n",
    "    ax.imshow(conv2_output[0, i].detach().numpy(), cmap='gray')  \n",
    "    ax.set_title(f'Channel {i}')\n",
    "    ax.axis('off')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 删除dropout"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "d:\\anaconda\\envs\\pytorch\\Lib\\site-packages\\torch\\nn\\_reduction.py:51: UserWarning: size_average and reduce args will be deprecated, please use reduction='sum' instead.\n",
      "  warnings.warn(warning.format(ret))\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "Test set: Avg. loss: 2.3096, Accuracy: 924/10000 (9%)\n",
      "\n",
      "Train Epoch: 1 [0/60000 (0%)]\tLoss: 2.311163\n",
      "Train Epoch: 1 [640/60000 (1%)]\tLoss: 2.279947\n",
      "Train Epoch: 1 [1280/60000 (2%)]\tLoss: 2.274196\n",
      "Train Epoch: 1 [1920/60000 (3%)]\tLoss: 2.242758\n",
      "Train Epoch: 1 [2560/60000 (4%)]\tLoss: 2.186769\n",
      "Train Epoch: 1 [3200/60000 (5%)]\tLoss: 2.156291\n",
      "Train Epoch: 1 [3840/60000 (6%)]\tLoss: 1.972376\n",
      "Train Epoch: 1 [4480/60000 (7%)]\tLoss: 1.859842\n",
      "Train Epoch: 1 [5120/60000 (9%)]\tLoss: 1.506459\n",
      "Train Epoch: 1 [5760/60000 (10%)]\tLoss: 1.161100\n",
      "Train Epoch: 1 [6400/60000 (11%)]\tLoss: 0.952828\n",
      "Train Epoch: 1 [7040/60000 (12%)]\tLoss: 0.803663\n",
      "Train Epoch: 1 [7680/60000 (13%)]\tLoss: 0.754277\n",
      "Train Epoch: 1 [8320/60000 (14%)]\tLoss: 0.637141\n",
      "Train Epoch: 1 [8960/60000 (15%)]\tLoss: 0.516890\n",
      "Train Epoch: 1 [9600/60000 (16%)]\tLoss: 0.521444\n",
      "Train Epoch: 1 [10240/60000 (17%)]\tLoss: 0.568273\n",
      "Train Epoch: 1 [10880/60000 (18%)]\tLoss: 0.677044\n",
      "Train Epoch: 1 [11520/60000 (19%)]\tLoss: 0.608756\n",
      "Train Epoch: 1 [12160/60000 (20%)]\tLoss: 0.344813\n",
      "Train Epoch: 1 [12800/60000 (21%)]\tLoss: 0.555787\n",
      "Train Epoch: 1 [13440/60000 (22%)]\tLoss: 0.367307\n",
      "Train Epoch: 1 [14080/60000 (23%)]\tLoss: 0.809148\n",
      "Train Epoch: 1 [14720/60000 (25%)]\tLoss: 0.244655\n",
      "Train Epoch: 1 [15360/60000 (26%)]\tLoss: 0.227682\n",
      "Train Epoch: 1 [16000/60000 (27%)]\tLoss: 0.327880\n",
      "Train Epoch: 1 [16640/60000 (28%)]\tLoss: 0.269151\n",
      "Train Epoch: 1 [17280/60000 (29%)]\tLoss: 0.258165\n",
      "Train Epoch: 1 [17920/60000 (30%)]\tLoss: 0.370579\n",
      "Train Epoch: 1 [18560/60000 (31%)]\tLoss: 0.410732\n",
      "Train Epoch: 1 [19200/60000 (32%)]\tLoss: 0.412575\n",
      "Train Epoch: 1 [19840/60000 (33%)]\tLoss: 0.350942\n",
      "Train Epoch: 1 [20480/60000 (34%)]\tLoss: 0.159182\n",
      "Train Epoch: 1 [21120/60000 (35%)]\tLoss: 0.169871\n",
      "Train Epoch: 1 [21760/60000 (36%)]\tLoss: 0.196863\n",
      "Train Epoch: 1 [22400/60000 (37%)]\tLoss: 0.295027\n",
      "Train Epoch: 1 [23040/60000 (38%)]\tLoss: 0.232723\n",
      "Train Epoch: 1 [23680/60000 (39%)]\tLoss: 0.109639\n",
      "Train Epoch: 1 [24320/60000 (41%)]\tLoss: 0.328122\n",
      "Train Epoch: 1 [24960/60000 (42%)]\tLoss: 0.280987\n",
      "Train Epoch: 1 [25600/60000 (43%)]\tLoss: 0.247887\n",
      "Train Epoch: 1 [26240/60000 (44%)]\tLoss: 0.280430\n",
      "Train Epoch: 1 [26880/60000 (45%)]\tLoss: 0.218616\n",
      "Train Epoch: 1 [27520/60000 (46%)]\tLoss: 0.180552\n",
      "Train Epoch: 1 [28160/60000 (47%)]\tLoss: 0.284875\n",
      "Train Epoch: 1 [28800/60000 (48%)]\tLoss: 0.147216\n",
      "Train Epoch: 1 [29440/60000 (49%)]\tLoss: 0.253187\n",
      "Train Epoch: 1 [30080/60000 (50%)]\tLoss: 0.283270\n",
      "Train Epoch: 1 [30720/60000 (51%)]\tLoss: 0.234959\n",
      "Train Epoch: 1 [31360/60000 (52%)]\tLoss: 0.221406\n",
      "Train Epoch: 1 [32000/60000 (53%)]\tLoss: 0.118557\n",
      "Train Epoch: 1 [32640/60000 (54%)]\tLoss: 0.100404\n",
      "Train Epoch: 1 [33280/60000 (55%)]\tLoss: 0.159447\n",
      "Train Epoch: 1 [33920/60000 (57%)]\tLoss: 0.173599\n",
      "Train Epoch: 1 [34560/60000 (58%)]\tLoss: 0.244107\n",
      "Train Epoch: 1 [35200/60000 (59%)]\tLoss: 0.259584\n",
      "Train Epoch: 1 [35840/60000 (60%)]\tLoss: 0.096311\n",
      "Train Epoch: 1 [36480/60000 (61%)]\tLoss: 0.162310\n",
      "Train Epoch: 1 [37120/60000 (62%)]\tLoss: 0.348146\n",
      "Train Epoch: 1 [37760/60000 (63%)]\tLoss: 0.263350\n",
      "Train Epoch: 1 [38400/60000 (64%)]\tLoss: 0.226863\n",
      "Train Epoch: 1 [39040/60000 (65%)]\tLoss: 0.114779\n",
      "Train Epoch: 1 [39680/60000 (66%)]\tLoss: 0.246692\n",
      "Train Epoch: 1 [40320/60000 (67%)]\tLoss: 0.051497\n",
      "Train Epoch: 1 [40960/60000 (68%)]\tLoss: 0.061601\n",
      "Train Epoch: 1 [41600/60000 (69%)]\tLoss: 0.049234\n",
      "Train Epoch: 1 [42240/60000 (70%)]\tLoss: 0.105650\n",
      "Train Epoch: 1 [42880/60000 (71%)]\tLoss: 0.128364\n",
      "Train Epoch: 1 [43520/60000 (72%)]\tLoss: 0.146507\n",
      "Train Epoch: 1 [44160/60000 (74%)]\tLoss: 0.121798\n",
      "Train Epoch: 1 [44800/60000 (75%)]\tLoss: 0.139093\n",
      "Train Epoch: 1 [45440/60000 (76%)]\tLoss: 0.150116\n",
      "Train Epoch: 1 [46080/60000 (77%)]\tLoss: 0.210013\n",
      "Train Epoch: 1 [46720/60000 (78%)]\tLoss: 0.043078\n",
      "Train Epoch: 1 [47360/60000 (79%)]\tLoss: 0.222735\n",
      "Train Epoch: 1 [48000/60000 (80%)]\tLoss: 0.146541\n",
      "Train Epoch: 1 [48640/60000 (81%)]\tLoss: 0.098440\n",
      "Train Epoch: 1 [49280/60000 (82%)]\tLoss: 0.078497\n",
      "Train Epoch: 1 [49920/60000 (83%)]\tLoss: 0.067082\n",
      "Train Epoch: 1 [50560/60000 (84%)]\tLoss: 0.173105\n",
      "Train Epoch: 1 [51200/60000 (85%)]\tLoss: 0.168500\n",
      "Train Epoch: 1 [51840/60000 (86%)]\tLoss: 0.157899\n",
      "Train Epoch: 1 [52480/60000 (87%)]\tLoss: 0.159102\n",
      "Train Epoch: 1 [53120/60000 (88%)]\tLoss: 0.117730\n",
      "Train Epoch: 1 [53760/60000 (90%)]\tLoss: 0.079995\n",
      "Train Epoch: 1 [54400/60000 (91%)]\tLoss: 0.136264\n",
      "Train Epoch: 1 [55040/60000 (92%)]\tLoss: 0.176864\n",
      "Train Epoch: 1 [55680/60000 (93%)]\tLoss: 0.055752\n",
      "Train Epoch: 1 [56320/60000 (94%)]\tLoss: 0.161734\n",
      "Train Epoch: 1 [56960/60000 (95%)]\tLoss: 0.134985\n",
      "Train Epoch: 1 [57600/60000 (96%)]\tLoss: 0.165121\n",
      "Train Epoch: 1 [58240/60000 (97%)]\tLoss: 0.068500\n",
      "Train Epoch: 1 [58880/60000 (98%)]\tLoss: 0.245279\n",
      "Train Epoch: 1 [59520/60000 (99%)]\tLoss: 0.151732\n",
      "\n",
      "Test set: Avg. loss: 0.1210, Accuracy: 9648/10000 (96%)\n",
      "\n",
      "Train Epoch: 2 [0/60000 (0%)]\tLoss: 0.101422\n",
      "Train Epoch: 2 [640/60000 (1%)]\tLoss: 0.096064\n",
      "Train Epoch: 2 [1280/60000 (2%)]\tLoss: 0.165958\n",
      "Train Epoch: 2 [1920/60000 (3%)]\tLoss: 0.066891\n",
      "Train Epoch: 2 [2560/60000 (4%)]\tLoss: 0.066662\n",
      "Train Epoch: 2 [3200/60000 (5%)]\tLoss: 0.092950\n",
      "Train Epoch: 2 [3840/60000 (6%)]\tLoss: 0.096189\n",
      "Train Epoch: 2 [4480/60000 (7%)]\tLoss: 0.096982\n",
      "Train Epoch: 2 [5120/60000 (9%)]\tLoss: 0.217630\n",
      "Train Epoch: 2 [5760/60000 (10%)]\tLoss: 0.055258\n",
      "Train Epoch: 2 [6400/60000 (11%)]\tLoss: 0.186072\n",
      "Train Epoch: 2 [7040/60000 (12%)]\tLoss: 0.136748\n",
      "Train Epoch: 2 [7680/60000 (13%)]\tLoss: 0.161019\n",
      "Train Epoch: 2 [8320/60000 (14%)]\tLoss: 0.153986\n",
      "Train Epoch: 2 [8960/60000 (15%)]\tLoss: 0.066223\n",
      "Train Epoch: 2 [9600/60000 (16%)]\tLoss: 0.163214\n",
      "Train Epoch: 2 [10240/60000 (17%)]\tLoss: 0.053492\n",
      "Train Epoch: 2 [10880/60000 (18%)]\tLoss: 0.108900\n",
      "Train Epoch: 2 [11520/60000 (19%)]\tLoss: 0.109850\n",
      "Train Epoch: 2 [12160/60000 (20%)]\tLoss: 0.047436\n",
      "Train Epoch: 2 [12800/60000 (21%)]\tLoss: 0.087852\n",
      "Train Epoch: 2 [13440/60000 (22%)]\tLoss: 0.148791\n",
      "Train Epoch: 2 [14080/60000 (23%)]\tLoss: 0.029420\n",
      "Train Epoch: 2 [14720/60000 (25%)]\tLoss: 0.060252\n",
      "Train Epoch: 2 [15360/60000 (26%)]\tLoss: 0.179984\n",
      "Train Epoch: 2 [16000/60000 (27%)]\tLoss: 0.118456\n",
      "Train Epoch: 2 [16640/60000 (28%)]\tLoss: 0.197892\n",
      "Train Epoch: 2 [17280/60000 (29%)]\tLoss: 0.203374\n",
      "Train Epoch: 2 [17920/60000 (30%)]\tLoss: 0.027291\n",
      "Train Epoch: 2 [18560/60000 (31%)]\tLoss: 0.108690\n",
      "Train Epoch: 2 [19200/60000 (32%)]\tLoss: 0.323664\n",
      "Train Epoch: 2 [19840/60000 (33%)]\tLoss: 0.128956\n",
      "Train Epoch: 2 [20480/60000 (34%)]\tLoss: 0.277766\n",
      "Train Epoch: 2 [21120/60000 (35%)]\tLoss: 0.083947\n",
      "Train Epoch: 2 [21760/60000 (36%)]\tLoss: 0.171353\n",
      "Train Epoch: 2 [22400/60000 (37%)]\tLoss: 0.034934\n",
      "Train Epoch: 2 [23040/60000 (38%)]\tLoss: 0.163983\n",
      "Train Epoch: 2 [23680/60000 (39%)]\tLoss: 0.045940\n",
      "Train Epoch: 2 [24320/60000 (41%)]\tLoss: 0.183800\n",
      "Train Epoch: 2 [24960/60000 (42%)]\tLoss: 0.023491\n",
      "Train Epoch: 2 [25600/60000 (43%)]\tLoss: 0.121996\n",
      "Train Epoch: 2 [26240/60000 (44%)]\tLoss: 0.081953\n",
      "Train Epoch: 2 [26880/60000 (45%)]\tLoss: 0.041926\n",
      "Train Epoch: 2 [27520/60000 (46%)]\tLoss: 0.084519\n",
      "Train Epoch: 2 [28160/60000 (47%)]\tLoss: 0.057865\n",
      "Train Epoch: 2 [28800/60000 (48%)]\tLoss: 0.174959\n",
      "Train Epoch: 2 [29440/60000 (49%)]\tLoss: 0.049250\n",
      "Train Epoch: 2 [30080/60000 (50%)]\tLoss: 0.044311\n",
      "Train Epoch: 2 [30720/60000 (51%)]\tLoss: 0.225443\n",
      "Train Epoch: 2 [31360/60000 (52%)]\tLoss: 0.132778\n",
      "Train Epoch: 2 [32000/60000 (53%)]\tLoss: 0.038590\n",
      "Train Epoch: 2 [32640/60000 (54%)]\tLoss: 0.032737\n",
      "Train Epoch: 2 [33280/60000 (55%)]\tLoss: 0.106389\n",
      "Train Epoch: 2 [33920/60000 (57%)]\tLoss: 0.064988\n",
      "Train Epoch: 2 [34560/60000 (58%)]\tLoss: 0.128967\n",
      "Train Epoch: 2 [35200/60000 (59%)]\tLoss: 0.116862\n",
      "Train Epoch: 2 [35840/60000 (60%)]\tLoss: 0.039424\n",
      "Train Epoch: 2 [36480/60000 (61%)]\tLoss: 0.087700\n",
      "Train Epoch: 2 [37120/60000 (62%)]\tLoss: 0.029725\n",
      "Train Epoch: 2 [37760/60000 (63%)]\tLoss: 0.143097\n",
      "Train Epoch: 2 [38400/60000 (64%)]\tLoss: 0.182992\n",
      "Train Epoch: 2 [39040/60000 (65%)]\tLoss: 0.140147\n",
      "Train Epoch: 2 [39680/60000 (66%)]\tLoss: 0.088420\n",
      "Train Epoch: 2 [40320/60000 (67%)]\tLoss: 0.088070\n",
      "Train Epoch: 2 [40960/60000 (68%)]\tLoss: 0.137755\n",
      "Train Epoch: 2 [41600/60000 (69%)]\tLoss: 0.141238\n",
      "Train Epoch: 2 [42240/60000 (70%)]\tLoss: 0.039486\n",
      "Train Epoch: 2 [42880/60000 (71%)]\tLoss: 0.059043\n",
      "Train Epoch: 2 [43520/60000 (72%)]\tLoss: 0.060987\n",
      "Train Epoch: 2 [44160/60000 (74%)]\tLoss: 0.101684\n",
      "Train Epoch: 2 [44800/60000 (75%)]\tLoss: 0.028524\n",
      "Train Epoch: 2 [45440/60000 (76%)]\tLoss: 0.046389\n",
      "Train Epoch: 2 [46080/60000 (77%)]\tLoss: 0.184552\n",
      "Train Epoch: 2 [46720/60000 (78%)]\tLoss: 0.130117\n",
      "Train Epoch: 2 [47360/60000 (79%)]\tLoss: 0.122810\n",
      "Train Epoch: 2 [48000/60000 (80%)]\tLoss: 0.212644\n",
      "Train Epoch: 2 [48640/60000 (81%)]\tLoss: 0.098241\n",
      "Train Epoch: 2 [49280/60000 (82%)]\tLoss: 0.021682\n",
      "Train Epoch: 2 [49920/60000 (83%)]\tLoss: 0.086849\n",
      "Train Epoch: 2 [50560/60000 (84%)]\tLoss: 0.080004\n",
      "Train Epoch: 2 [51200/60000 (85%)]\tLoss: 0.038106\n",
      "Train Epoch: 2 [51840/60000 (86%)]\tLoss: 0.091910\n",
      "Train Epoch: 2 [52480/60000 (87%)]\tLoss: 0.169664\n",
      "Train Epoch: 2 [53120/60000 (88%)]\tLoss: 0.080163\n",
      "Train Epoch: 2 [53760/60000 (90%)]\tLoss: 0.195041\n",
      "Train Epoch: 2 [54400/60000 (91%)]\tLoss: 0.118057\n",
      "Train Epoch: 2 [55040/60000 (92%)]\tLoss: 0.054848\n",
      "Train Epoch: 2 [55680/60000 (93%)]\tLoss: 0.058598\n",
      "Train Epoch: 2 [56320/60000 (94%)]\tLoss: 0.118605\n",
      "Train Epoch: 2 [56960/60000 (95%)]\tLoss: 0.078762\n",
      "Train Epoch: 2 [57600/60000 (96%)]\tLoss: 0.061085\n",
      "Train Epoch: 2 [58240/60000 (97%)]\tLoss: 0.028786\n",
      "Train Epoch: 2 [58880/60000 (98%)]\tLoss: 0.140272\n",
      "Train Epoch: 2 [59520/60000 (99%)]\tLoss: 0.077055\n",
      "\n",
      "Test set: Avg. loss: 0.0768, Accuracy: 9759/10000 (98%)\n",
      "\n",
      "Train Epoch: 3 [0/60000 (0%)]\tLoss: 0.213740\n",
      "Train Epoch: 3 [640/60000 (1%)]\tLoss: 0.021732\n",
      "Train Epoch: 3 [1280/60000 (2%)]\tLoss: 0.118722\n",
      "Train Epoch: 3 [1920/60000 (3%)]\tLoss: 0.060707\n",
      "Train Epoch: 3 [2560/60000 (4%)]\tLoss: 0.021880\n",
      "Train Epoch: 3 [3200/60000 (5%)]\tLoss: 0.057435\n",
      "Train Epoch: 3 [3840/60000 (6%)]\tLoss: 0.057254\n",
      "Train Epoch: 3 [4480/60000 (7%)]\tLoss: 0.022434\n",
      "Train Epoch: 3 [5120/60000 (9%)]\tLoss: 0.034564\n",
      "Train Epoch: 3 [5760/60000 (10%)]\tLoss: 0.112284\n",
      "Train Epoch: 3 [6400/60000 (11%)]\tLoss: 0.125299\n",
      "Train Epoch: 3 [7040/60000 (12%)]\tLoss: 0.017289\n",
      "Train Epoch: 3 [7680/60000 (13%)]\tLoss: 0.045171\n",
      "Train Epoch: 3 [8320/60000 (14%)]\tLoss: 0.017676\n",
      "Train Epoch: 3 [8960/60000 (15%)]\tLoss: 0.065214\n",
      "Train Epoch: 3 [9600/60000 (16%)]\tLoss: 0.064484\n",
      "Train Epoch: 3 [10240/60000 (17%)]\tLoss: 0.056376\n",
      "Train Epoch: 3 [10880/60000 (18%)]\tLoss: 0.168599\n",
      "Train Epoch: 3 [11520/60000 (19%)]\tLoss: 0.030203\n",
      "Train Epoch: 3 [12160/60000 (20%)]\tLoss: 0.049424\n",
      "Train Epoch: 3 [12800/60000 (21%)]\tLoss: 0.038329\n",
      "Train Epoch: 3 [13440/60000 (22%)]\tLoss: 0.055914\n",
      "Train Epoch: 3 [14080/60000 (23%)]\tLoss: 0.175951\n",
      "Train Epoch: 3 [14720/60000 (25%)]\tLoss: 0.138745\n",
      "Train Epoch: 3 [15360/60000 (26%)]\tLoss: 0.040743\n",
      "Train Epoch: 3 [16000/60000 (27%)]\tLoss: 0.073114\n",
      "Train Epoch: 3 [16640/60000 (28%)]\tLoss: 0.137956\n",
      "Train Epoch: 3 [17280/60000 (29%)]\tLoss: 0.140585\n",
      "Train Epoch: 3 [17920/60000 (30%)]\tLoss: 0.028528\n",
      "Train Epoch: 3 [18560/60000 (31%)]\tLoss: 0.074610\n",
      "Train Epoch: 3 [19200/60000 (32%)]\tLoss: 0.091416\n",
      "Train Epoch: 3 [19840/60000 (33%)]\tLoss: 0.038388\n",
      "Train Epoch: 3 [20480/60000 (34%)]\tLoss: 0.032492\n",
      "Train Epoch: 3 [21120/60000 (35%)]\tLoss: 0.017637\n",
      "Train Epoch: 3 [21760/60000 (36%)]\tLoss: 0.173813\n",
      "Train Epoch: 3 [22400/60000 (37%)]\tLoss: 0.074409\n",
      "Train Epoch: 3 [23040/60000 (38%)]\tLoss: 0.174461\n",
      "Train Epoch: 3 [23680/60000 (39%)]\tLoss: 0.034483\n",
      "Train Epoch: 3 [24320/60000 (41%)]\tLoss: 0.016706\n",
      "Train Epoch: 3 [24960/60000 (42%)]\tLoss: 0.105609\n",
      "Train Epoch: 3 [25600/60000 (43%)]\tLoss: 0.031879\n",
      "Train Epoch: 3 [26240/60000 (44%)]\tLoss: 0.094489\n",
      "Train Epoch: 3 [26880/60000 (45%)]\tLoss: 0.043937\n",
      "Train Epoch: 3 [27520/60000 (46%)]\tLoss: 0.043364\n",
      "Train Epoch: 3 [28160/60000 (47%)]\tLoss: 0.057206\n",
      "Train Epoch: 3 [28800/60000 (48%)]\tLoss: 0.071705\n",
      "Train Epoch: 3 [29440/60000 (49%)]\tLoss: 0.124295\n",
      "Train Epoch: 3 [30080/60000 (50%)]\tLoss: 0.070850\n",
      "Train Epoch: 3 [30720/60000 (51%)]\tLoss: 0.063710\n",
      "Train Epoch: 3 [31360/60000 (52%)]\tLoss: 0.031398\n",
      "Train Epoch: 3 [32000/60000 (53%)]\tLoss: 0.022746\n",
      "Train Epoch: 3 [32640/60000 (54%)]\tLoss: 0.180668\n",
      "Train Epoch: 3 [33280/60000 (55%)]\tLoss: 0.017086\n",
      "Train Epoch: 3 [33920/60000 (57%)]\tLoss: 0.055885\n",
      "Train Epoch: 3 [34560/60000 (58%)]\tLoss: 0.089736\n",
      "Train Epoch: 3 [35200/60000 (59%)]\tLoss: 0.012359\n",
      "Train Epoch: 3 [35840/60000 (60%)]\tLoss: 0.073715\n",
      "Train Epoch: 3 [36480/60000 (61%)]\tLoss: 0.037848\n",
      "Train Epoch: 3 [37120/60000 (62%)]\tLoss: 0.099922\n",
      "Train Epoch: 3 [37760/60000 (63%)]\tLoss: 0.018965\n",
      "Train Epoch: 3 [38400/60000 (64%)]\tLoss: 0.078420\n",
      "Train Epoch: 3 [39040/60000 (65%)]\tLoss: 0.026969\n",
      "Train Epoch: 3 [39680/60000 (66%)]\tLoss: 0.029224\n",
      "Train Epoch: 3 [40320/60000 (67%)]\tLoss: 0.098399\n",
      "Train Epoch: 3 [40960/60000 (68%)]\tLoss: 0.056140\n",
      "Train Epoch: 3 [41600/60000 (69%)]\tLoss: 0.021361\n",
      "Train Epoch: 3 [42240/60000 (70%)]\tLoss: 0.033189\n",
      "Train Epoch: 3 [42880/60000 (71%)]\tLoss: 0.034543\n",
      "Train Epoch: 3 [43520/60000 (72%)]\tLoss: 0.037108\n",
      "Train Epoch: 3 [44160/60000 (74%)]\tLoss: 0.032548\n",
      "Train Epoch: 3 [44800/60000 (75%)]\tLoss: 0.032460\n",
      "Train Epoch: 3 [45440/60000 (76%)]\tLoss: 0.016842\n",
      "Train Epoch: 3 [46080/60000 (77%)]\tLoss: 0.055073\n",
      "Train Epoch: 3 [46720/60000 (78%)]\tLoss: 0.010091\n",
      "Train Epoch: 3 [47360/60000 (79%)]\tLoss: 0.066913\n",
      "Train Epoch: 3 [48000/60000 (80%)]\tLoss: 0.023601\n",
      "Train Epoch: 3 [48640/60000 (81%)]\tLoss: 0.042145\n",
      "Train Epoch: 3 [49280/60000 (82%)]\tLoss: 0.129478\n",
      "Train Epoch: 3 [49920/60000 (83%)]\tLoss: 0.020979\n",
      "Train Epoch: 3 [50560/60000 (84%)]\tLoss: 0.242103\n",
      "Train Epoch: 3 [51200/60000 (85%)]\tLoss: 0.047684\n",
      "Train Epoch: 3 [51840/60000 (86%)]\tLoss: 0.129230\n",
      "Train Epoch: 3 [52480/60000 (87%)]\tLoss: 0.111699\n",
      "Train Epoch: 3 [53120/60000 (88%)]\tLoss: 0.175562\n",
      "Train Epoch: 3 [53760/60000 (90%)]\tLoss: 0.041619\n",
      "Train Epoch: 3 [54400/60000 (91%)]\tLoss: 0.042630\n",
      "Train Epoch: 3 [55040/60000 (92%)]\tLoss: 0.025554\n",
      "Train Epoch: 3 [55680/60000 (93%)]\tLoss: 0.052823\n",
      "Train Epoch: 3 [56320/60000 (94%)]\tLoss: 0.168901\n",
      "Train Epoch: 3 [56960/60000 (95%)]\tLoss: 0.035912\n",
      "Train Epoch: 3 [57600/60000 (96%)]\tLoss: 0.022343\n",
      "Train Epoch: 3 [58240/60000 (97%)]\tLoss: 0.205587\n",
      "Train Epoch: 3 [58880/60000 (98%)]\tLoss: 0.134611\n",
      "Train Epoch: 3 [59520/60000 (99%)]\tLoss: 0.045316\n",
      "\n",
      "Test set: Avg. loss: 0.0712, Accuracy: 9776/10000 (98%)\n",
      "\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "Text(0.5, 1.0, 'delete Dropout')"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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JAIsN5pVq1bJxo0b1fsqVaqosXD85cyZM1KjRg25//77pXPnzj5vt3nzZsmVK5frc8GCBSUaobghhBBCIkDcHDp0SO68805lRcmTJ49advz4cWnevLlMmjRJChQo4PO+2rZtq17+AjGjjx3NUNwQQgghEeCWeuKJJ+TUqVNq0D7tllq/fr2cPHlSjX8TCmrWrClFihSRli1beszcMrlw4YIqm/mKFChuCCGEkAgQN7NmzVIjFCOIWIPRit977z358ccfJZhA0IwdO1aNp4NXiRIlpFmzZslO+TB06FDJnTu364VtIgWKG0IIISQC3FJXr16VjBkzJlmOZfgumFSoUEG9NA0bNpStW7fKO++8I59//rnHbfr16ydPP/206zMsN5EicChuCCGEkAiw3Nx0003St29f2bdvn2vZ3r175amnnpKbb75ZQg3G2vn777+9fp85c2YVfGy+IgWKG0IIISQCxM2YMWOU9aN06dJy7bXXqleZMmXUstGjR0uoWbNmjXJXRSMUN4QQQkgEuKXg0kGMy88//yybNm1SyxB/06JFC78Pfvr0aTery/bt25VYyZcvn5QsWVK5lGAV+uyzz9T3I0eOVEIKqeeYnfzjjz+WefPmyezZsyUaobghhBBCImScGwych0wlvNLCypUrVQq5RsfG9OzZUyZMmCD79++XXbt2ub6/ePGiPPPMM0rwZMuWTapXr65ElrmPaILihhBCCAk8CZZlWf5utHDhQnn77bddg/ghW+q5556TG2+8USIduM+QNXXixImwx9/A8IWks7x5RY4eDWtRCCGEkJjpv/2OucF8UnBBwXKCcW3wwmzgCCaeOHFiWsodd9ByQwghhESA5QbxNQ899JDKjjIZMWKEfPTRRy5rTqQSSZYbTImFWOiEBJErV+z/hBBCCAmx5Wbbtm1qsksnHTp0UAHBxH/LDeTlpUvhLg0hhBASG6RLTbbU3LlzkyxHYG+kDI4XbeIG0DVFCCGEhClbCtlKiLNByjZGCAaY3wnZTaNGjQpQseKDzJndxU0EjS9ICCGExI+4efTRR6Vw4cIyfPhwmTJliisOZ/LkydKxY8dglDFmQYwNBM6FC7TcEEIIIWEd5+bWW29VL5J2smaluCGEEELCLm70gHqHDh1KMlkmRhYmvsN0cEIIISTM4mbLli1y//33y9KlS92WI6McIxdfQU4z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HaY+RjjaD2nJRYoUUccpVqyY+oyOXYMfWe/evVXaI368t956q7r5R3OdTX766Sd1njdv3uy2PNbON8rg6fpGOrBOS+3fv7+6YaO+N998c5I2+eeff1THliNHDpXuft9996mOxARjdTRu3FjtA9cTbt5OpkyZYl133XWqrkiT//77792+96Usgag3OnVvv3s91tGqVatU+i4efLJkyWJVqlTJev31190EQCTWO6W646ENohydNjpcpD5jfCWnoI61c66BCMFvFiLFSTSf8+RIwJ/A24MIIYQQQsIDY24IIYQQElNQ3BBCCCEkpqC4IYQQQkhMQXFDCCGEkJiC4oYQQgghMQXFDSGEEEJiCoobQgghhMQUFDeEhIFmzZqpmdgjBQx3hYkzMStwQkKCa+qFYDJo0CCpWbOmX9uULl1aRo4cGbQyxQKpaVdCYg2KG0KIzJo1SyZMmKAmUd2/f79UrVo1yTr4HhONBopnn302yVw0KbFixQq32csJIcQTGTwuJYREHVeuXFFWF0x45y968tCGDRumuRyYWR0TZKZEjhw51MsfChQokIaSEULiBVpuSFy7hvr06SPPP/+8csdgxlqY9DU7duxI4qLBrMFYtmDBAvUZ//H5p59+klq1aknWrFnlpptuUjNn//jjj1KpUiU1a3a3bt3k7Nmzbse/fPmympk9d+7ckj9/funfv79yD2kuXLigrBvFihWT7Nmzq5mJ9XFNS8rMmTPVrNyZM2dWM5h7YuHChVKvXj21DkTMiy++qI4P7r33XnniiSfUtqgLXD9OcNz77rtPTpw4odbBS7cV1h88eLD06NFD1VVbVl544QW57rrrJFu2bFK2bFlVP3NWYaf7BOXo1KmTvP3226qMmLH6sccec9vG6ZZCOT7++GO59dZb1XHKly+v2sMEn7E8S5Ys0rx5c/nvf/+rtsO59Aa+69WrlxJTqBPO6R9//KG+O3z4sLpWXn/9ddf6S5cuVYJOW6IgFjt27CiFChVSAu76669Xs3CboC6vvfaaajesU6pUKVVW7B/bYln16tVl5cqVSc75jBkzXHVq3bq17N69W5IDbYRrEetXrFhR3n//fTcxiusQbY7vUY6hQ4d63ReuBVxLuCZRlkaNGsnOnTtd33/77bdSu3ZttS+c91deecV1raXUtuZ18fnnn6s2wu/jzjvvlFOnTiVbR0LcCMqMVYREAU2bNlWT4w0aNMj666+/rP/+979WQkKCNXv2bPW9nmgQM+xqjh075jbRoJ60rn79+moW4dWrV6tJJ7FvTNSHz4sWLbKuueYat4nm8D0m5+vbt6+1adMmNRMvJuocN26ca51evXpZDRs2VNtjcs+33npLTTaHsgJMSIlJALEOZuTFfs6cOZOknnv27FH7xoSgmK13+vTpatJLzNoLMJkeZgTHbNGYJFTPkG6CWaNHjhyp2kvPJK0nFMQkhFiO2YBRTj0R6eDBg1W50I4zZ85Uk+W9+eabrn3i+DVq1HB9xkR/2A9mZkc5//e//yVpExwLMxhr0PYo98SJE60tW7ZYffr0Ue2KCRD1LOVoI8wIjfb56quv1KR/2A7n0huYLb59+/bWihUrVHtjglCcQ71fTAiI/eL7kydPqglCn3rqKdf2mGF57NixakZkbP/yyy+rSQnNmZpRF0xUivWwzqOPPqrqj5mpMQEhJhTs1KmTmsgQEw6a57xu3bpqNmfM4o6JR3ENeGtXXFuYLPabb75R7YH/OC5mZQe4rkqUKKGuM0yMunjxYtWensAkqZhgEe2J84xZ3bEfXS/sA3XAMswwjd9S6dKl1W/M17ZF+XEOO3furNoP+yxcuLD1n//8x+v5IsQJxQ2JWyAwMMutyfXXX2+98MILfoubn3/+2bXO0KFD1TLc3DUPP/yw1bp1a7djm50WwHGxDKCzSJ8+vbV371638mEW3X79+rk6OhwHHWlyoFOoUKGC27Hee+891YFcuXJFfYZgQGebHDgeOjYn2A6dcEqgE61Tp06y4gb7unz5smvZHXfcoWZuT07cQDhoTp8+rZb9+OOPrjatWrWqWzleeumlZMUNOnd00M5Zka+99lo1u7IGYhEzIHfr1s2qVq1akvWdYJZkzIZu1uXuu+92fYZgRLkwa7Jm2bJlapmemV6fc3MWdQhBLPv11189tivK7RQrEJ4NGjRQ75944gnrpptucrs+vAEBgmMtWLDA4/e4PjGjtMnnn3+uxJWvbYvyQ9RCNGowQz1mribEVxhzQ+IamP1NYJqHSykt+4ErQrtizGW//fab2zb169dX7hFNgwYNZPjw4Sp2Zt26deo/3DomcFXBXaOBK8RZBycbN25U+zaPBVfC6dOnZc+ePVKyZElJK3Xr1k2ybPLkyfLuu+8qFw2OBdcE3BDJUaVKFUmfPr3b+UBbJIdZf7hKcAx9Djdv3qxcQiZwqSQHXCQor9nO4Ny5c6ouGrjPEHj99ddfy6pVq5TLT4Pt4V75/vvvVYA26o7tnW5D53UDqlWrlmQZ6gNXGMiQIYNbneBmgnsI59lZtzNnzqgyP/DAA/Lggw+6lqM8cPdod2DLli2lQoUK0qZNG/m///s/adWqlce2gfsW68MVhm1atGghXbp0UedJt92SJUtkyJAhrm1wHZ8/f165ZX1tW7ijcubMmebfJYlfKG5IXJMxY0a3zxAAV69eVe91YK4ZB2PGf3jbD/aR3H59AR0AOnl0mmZnD8wgXMT4mKIlXEBUmCxbtky6d++u4i3QEaIjnTRpkhJvyZGadktrW3tqe3SmZnyTxswWQ2e8b98+dSzEZ5miBLFSc+bMUQKoXLly6jzdfvvtKr7FW9n1efS0LLX1QV3ARx99pGK2TPR1hfiY7du3qxgxxAVBrEC0TJ061eM+P/30UxWrhgw7CNiXX35Z1RViHcfDOe/cuXOS7RCD42vbBvqckviD4oaQFDJz8OSNYGEQyPFffv31V7fPy5cvV0Gi6HRwPDzx4mn1xhtvTNNxEEj6zTffKJGmO0s8XePJuHjx4j7vB1YilMkXEGCLwNSXXnrJtcwMOg0VsEb88MMPSdLJkwOd/YEDB5SFxFNwNYBIufvuu6Vr167qGAiQhYWpYMGCrvaFhQOBzgCdOgRQIIDVBUHG2koD6xSCdHGencDyU7RoUdm2bZsSm96AtQt1wQsiDBaco0ePKkuNJ3B94tWvXz9lFZw4caISN2g7lAeCLrVtS0ggYLYUIV7A0zZu2G+88YYy+SPjCE+pgQIuiqefflp1Bl999ZWMHj1a+vbtq76DOwqdETJppk2bpp6s4dZCFgtcHf7Qu3dvlU2DjKhNmzapbJaBAweqY/uTNo7OCJ00MoKOHDmSJPvLBCIN9YO1BhYOuKemT58uoebhhx9WdUbm1l9//SVTpkxRGUfAm8ULVgt02Mjcmj17thIlEGsQajpzCe+ROYZ66ayw+++/363+OG8Qw3DFIFsuUJYHWDVwLiGOYdmDiMJ16s3dBksKrhuUFW0AEQbry4gRI9T3+I/rD+2E7+FmgwvM05hGuA4haGCZg1hF+2zZssUlrAYMGCCfffaZOuaGDRvU7wbXgP7d+NK2hAQCihtCkmH8+PHqSblOnTpqRGGk7gYKCBfEGqBTQsozhI05QB06IKzzzDPPKOsAOgRYHfyNkUEqOawXEEc1atSQRx55RMVg+CvUMAYOtsXTPaxaw4YN87puhw4d5KmnnlIpxkjrRQeGVPBQU6ZMGeVegdBAfMsHH3zgsiaZMTImED1oryZNmqj0dwgXpCKjM4clBC4VpKMjVRkWDwhEvF+8eLHavxYMefPmVW3Wvn175ZqD1SIQIJ4LggqCCbFTcFPCPeQNWJWQCo7rCa6zpk2bKoGHtgGw4OFcIm4KsTwQHKi/J+GLY0ME3XbbbapdcL3i2oWIBKgnBoKEcMG+ILreeecdZcXzpW0JCRQJiCoO2N4IISTCQbDr2LFjUxwbJhKBKIHITm6MHkIIY24IITEOBqyDFQEZOoiFeeutt5RFiRASu1DcEEJiGsSEwJ2IAFm49ODmQ9wIISR2oVuKEEIIITEFA4oJIYQQElNQ3BBCCCEkpqC4IYQQQkhMQXFDCCGEkJiC4oYQQgghMQXFDSGEEEJiCoobQgghhMQUFDeEEEIIiSkobgghhBAiscT/A8oF81R1unh5AAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "n_epochs = 3\n",
    "batch_size_train = 64\n",
    "batch_size_test = 1000\n",
    "learning_rate = 0.01\n",
    "momentum = 0.5\n",
    "log_interval = 10\n",
    "random_seed = 1\n",
    "torch.backends.cudnn.enabled = False\n",
    "torch.manual_seed(random_seed)\n",
    "\n",
    "train_loader = torch.utils.data.DataLoader(\n",
    "  torchvision.datasets.MNIST('/files/', train=True, download=True,\n",
    "                             transform=torchvision.transforms.Compose([\n",
    "                               torchvision.transforms.ToTensor(),\n",
    "                               torchvision.transforms.Normalize(\n",
    "                                 (0.1307,), (0.3081,))\n",
    "                             ])),\n",
    "  batch_size=batch_size_train, shuffle=True)\n",
    "test_loader = torch.utils.data.DataLoader(\n",
    "  torchvision.datasets.MNIST('/files/', train=False, download=True,\n",
    "                             transform=torchvision.transforms.Compose([\n",
    "                               torchvision.transforms.ToTensor(),\n",
    "                               torchvision.transforms.Normalize(\n",
    "                                 (0.1307,), (0.3081,))\n",
    "                             ])),\n",
    "  batch_size=batch_size_test, shuffle=True)\n",
    "\n",
    "examples = enumerate(test_loader)\n",
    "batch_idx, (example_data, example_targets) = next(examples)\n",
    "\n",
    "class Net(nn.Module):\n",
    "    def __init__(self):\n",
    "        super(Net, self).__init__()\n",
    "        self.conv1 = nn.Conv2d(1, 10, kernel_size=5)\n",
    "        self.conv2 = nn.Conv2d(10, 20, kernel_size=5)\n",
    "        #self.conv2_drop = nn.Dropout2d()\n",
    "        self.fc1 = nn.Linear(320, 50)\n",
    "        self.fc2 = nn.Linear(50, 10)\n",
    "\n",
    "    def forward(self, x):\n",
    "        x = F.relu(F.max_pool2d(self.conv1(x), 2))\n",
    "        x = F.relu(F.max_pool2d(self.conv2(x), 2))\n",
    "        x = x.view(-1, 320)\n",
    "        x = F.relu(self.fc1(x))\n",
    "        #x = F.dropout(x, training=self.training)\n",
    "        x = self.fc2(x)\n",
    "        return F.log_softmax(x, dim=1)\n",
    "    \n",
    "network = Net()\n",
    "optimizer = optim.SGD(network.parameters(), lr=learning_rate,\n",
    "                      momentum=momentum)\n",
    "\n",
    "train_losses = []\n",
    "train_counter = []\n",
    "test_losses = []\n",
    "test_counter = [i*len(train_loader.dataset) for i in range(n_epochs + 1)]\n",
    "\n",
    "def train(epoch):\n",
    "  network.train()\n",
    "  for batch_idx, (data, target) in enumerate(train_loader):\n",
    "    optimizer.zero_grad()\n",
    "    output = network(data)\n",
    "    loss = F.nll_loss(output, target)\n",
    "    loss.backward()\n",
    "    optimizer.step()\n",
    "    if batch_idx % log_interval == 0:\n",
    "      print('Train Epoch: {} [{}/{} ({:.0f}%)]\\tLoss: {:.6f}'.format(\n",
    "        epoch, batch_idx * len(data), len(train_loader.dataset),\n",
    "        100. * batch_idx / len(train_loader), loss.item()))\n",
    "      train_losses.append(loss.item())\n",
    "      train_counter.append(\n",
    "        (batch_idx*64) + ((epoch-1)*len(train_loader.dataset)))\n",
    "      torch.save(network.state_dict(), '/homework/model.pth')\n",
    "      torch.save(optimizer.state_dict(), '/homework/optimizer.pth')\n",
    "\n",
    "def test():\n",
    "  network.eval()\n",
    "  test_loss = 0\n",
    "  correct = 0\n",
    "  with torch.no_grad():\n",
    "    for data, target in test_loader:\n",
    "      output = network(data)\n",
    "      test_loss += F.nll_loss(output, target, size_average=False).item()\n",
    "      pred = output.data.max(1, keepdim=True)[1]\n",
    "      correct += pred.eq(target.data.view_as(pred)).sum()\n",
    "  test_loss /= len(test_loader.dataset)\n",
    "  test_losses.append(test_loss)\n",
    "  print('\\nTest set: Avg. loss: {:.4f}, Accuracy: {}/{} ({:.0f}%)\\n'.format(\n",
    "    test_loss, correct, len(test_loader.dataset),\n",
    "    100. * correct / len(test_loader.dataset)))\n",
    "  \n",
    "test()\n",
    "for epoch in range(1, n_epochs + 1):\n",
    "  train(epoch)\n",
    "  test()\n",
    "\n",
    "fig = plt.figure()\n",
    "plt.plot(train_counter, train_losses, color='blue')\n",
    "plt.scatter(test_counter, test_losses, color='red')\n",
    "plt.legend(['Train Loss', 'Test Loss'], loc='upper right')\n",
    "plt.xlabel('number of training examples seen')\n",
    "plt.ylabel('negative log likelihood loss')\n",
    "plt.title(\"delete Dropout\")\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 加一个CONV层"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "Test set: Avg. loss: 2.3093, Accuracy: 974/10000 (10%)\n",
      "\n",
      "Train Epoch: 1 [0/60000 (0%)]\tLoss: 2.261075\n",
      "Train Epoch: 1 [640/60000 (1%)]\tLoss: 2.293825\n",
      "Train Epoch: 1 [1280/60000 (2%)]\tLoss: 2.306122\n",
      "Train Epoch: 1 [1920/60000 (3%)]\tLoss: 2.318737\n",
      "Train Epoch: 1 [2560/60000 (4%)]\tLoss: 2.327106\n",
      "Train Epoch: 1 [3200/60000 (5%)]\tLoss: 2.312821\n",
      "Train Epoch: 1 [3840/60000 (6%)]\tLoss: 2.297702\n",
      "Train Epoch: 1 [4480/60000 (7%)]\tLoss: 2.294769\n",
      "Train Epoch: 1 [5120/60000 (9%)]\tLoss: 2.303794\n",
      "Train Epoch: 1 [5760/60000 (10%)]\tLoss: 2.302200\n",
      "Train Epoch: 1 [6400/60000 (11%)]\tLoss: 2.289903\n",
      "Train Epoch: 1 [7040/60000 (12%)]\tLoss: 2.276730\n",
      "Train Epoch: 1 [7680/60000 (13%)]\tLoss: 2.292845\n",
      "Train Epoch: 1 [8320/60000 (14%)]\tLoss: 2.245041\n",
      "Train Epoch: 1 [8960/60000 (15%)]\tLoss: 2.279534\n",
      "Train Epoch: 1 [9600/60000 (16%)]\tLoss: 2.239646\n",
      "Train Epoch: 1 [10240/60000 (17%)]\tLoss: 2.292707\n",
      "Train Epoch: 1 [10880/60000 (18%)]\tLoss: 2.241119\n",
      "Train Epoch: 1 [11520/60000 (19%)]\tLoss: 2.254004\n",
      "Train Epoch: 1 [12160/60000 (20%)]\tLoss: 2.218820\n",
      "Train Epoch: 1 [12800/60000 (21%)]\tLoss: 2.216947\n",
      "Train Epoch: 1 [13440/60000 (22%)]\tLoss: 2.173758\n",
      "Train Epoch: 1 [14080/60000 (23%)]\tLoss: 2.104926\n",
      "Train Epoch: 1 [14720/60000 (25%)]\tLoss: 2.167686\n",
      "Train Epoch: 1 [15360/60000 (26%)]\tLoss: 2.115113\n",
      "Train Epoch: 1 [16000/60000 (27%)]\tLoss: 2.110760\n",
      "Train Epoch: 1 [16640/60000 (28%)]\tLoss: 2.026789\n",
      "Train Epoch: 1 [17280/60000 (29%)]\tLoss: 1.931607\n",
      "Train Epoch: 1 [17920/60000 (30%)]\tLoss: 1.863374\n",
      "Train Epoch: 1 [18560/60000 (31%)]\tLoss: 1.887276\n",
      "Train Epoch: 1 [19200/60000 (32%)]\tLoss: 1.773167\n",
      "Train Epoch: 1 [19840/60000 (33%)]\tLoss: 1.577075\n",
      "Train Epoch: 1 [20480/60000 (34%)]\tLoss: 1.578532\n",
      "Train Epoch: 1 [21120/60000 (35%)]\tLoss: 1.642661\n",
      "Train Epoch: 1 [21760/60000 (36%)]\tLoss: 1.532711\n",
      "Train Epoch: 1 [22400/60000 (37%)]\tLoss: 1.522551\n",
      "Train Epoch: 1 [23040/60000 (38%)]\tLoss: 1.496877\n",
      "Train Epoch: 1 [23680/60000 (39%)]\tLoss: 1.478471\n",
      "Train Epoch: 1 [24320/60000 (41%)]\tLoss: 1.369174\n",
      "Train Epoch: 1 [24960/60000 (42%)]\tLoss: 1.362105\n",
      "Train Epoch: 1 [25600/60000 (43%)]\tLoss: 1.137291\n",
      "Train Epoch: 1 [26240/60000 (44%)]\tLoss: 1.097619\n",
      "Train Epoch: 1 [26880/60000 (45%)]\tLoss: 1.111510\n",
      "Train Epoch: 1 [27520/60000 (46%)]\tLoss: 1.096891\n",
      "Train Epoch: 1 [28160/60000 (47%)]\tLoss: 1.260369\n",
      "Train Epoch: 1 [28800/60000 (48%)]\tLoss: 1.354429\n",
      "Train Epoch: 1 [29440/60000 (49%)]\tLoss: 1.085032\n",
      "Train Epoch: 1 [30080/60000 (50%)]\tLoss: 1.361611\n",
      "Train Epoch: 1 [30720/60000 (51%)]\tLoss: 0.781142\n",
      "Train Epoch: 1 [31360/60000 (52%)]\tLoss: 1.103127\n",
      "Train Epoch: 1 [32000/60000 (53%)]\tLoss: 1.042928\n",
      "Train Epoch: 1 [32640/60000 (54%)]\tLoss: 0.897355\n",
      "Train Epoch: 1 [33280/60000 (55%)]\tLoss: 1.010409\n",
      "Train Epoch: 1 [33920/60000 (57%)]\tLoss: 0.843219\n",
      "Train Epoch: 1 [34560/60000 (58%)]\tLoss: 0.728117\n",
      "Train Epoch: 1 [35200/60000 (59%)]\tLoss: 1.065208\n",
      "Train Epoch: 1 [35840/60000 (60%)]\tLoss: 1.138054\n",
      "Train Epoch: 1 [36480/60000 (61%)]\tLoss: 0.706770\n",
      "Train Epoch: 1 [37120/60000 (62%)]\tLoss: 1.043232\n",
      "Train Epoch: 1 [37760/60000 (63%)]\tLoss: 0.854484\n",
      "Train Epoch: 1 [38400/60000 (64%)]\tLoss: 0.962800\n",
      "Train Epoch: 1 [39040/60000 (65%)]\tLoss: 0.919572\n",
      "Train Epoch: 1 [39680/60000 (66%)]\tLoss: 0.953729\n",
      "Train Epoch: 1 [40320/60000 (67%)]\tLoss: 0.895749\n",
      "Train Epoch: 1 [40960/60000 (68%)]\tLoss: 1.011996\n",
      "Train Epoch: 1 [41600/60000 (69%)]\tLoss: 0.885754\n",
      "Train Epoch: 1 [42240/60000 (70%)]\tLoss: 0.848087\n",
      "Train Epoch: 1 [42880/60000 (71%)]\tLoss: 0.976318\n",
      "Train Epoch: 1 [43520/60000 (72%)]\tLoss: 0.696983\n",
      "Train Epoch: 1 [44160/60000 (74%)]\tLoss: 0.842506\n",
      "Train Epoch: 1 [44800/60000 (75%)]\tLoss: 0.681572\n",
      "Train Epoch: 1 [45440/60000 (76%)]\tLoss: 0.592089\n",
      "Train Epoch: 1 [46080/60000 (77%)]\tLoss: 0.639174\n",
      "Train Epoch: 1 [46720/60000 (78%)]\tLoss: 0.869208\n",
      "Train Epoch: 1 [47360/60000 (79%)]\tLoss: 0.899357\n",
      "Train Epoch: 1 [48000/60000 (80%)]\tLoss: 0.699902\n",
      "Train Epoch: 1 [48640/60000 (81%)]\tLoss: 0.797196\n",
      "Train Epoch: 1 [49280/60000 (82%)]\tLoss: 0.879700\n",
      "Train Epoch: 1 [49920/60000 (83%)]\tLoss: 0.750218\n",
      "Train Epoch: 1 [50560/60000 (84%)]\tLoss: 1.071946\n",
      "Train Epoch: 1 [51200/60000 (85%)]\tLoss: 0.691375\n",
      "Train Epoch: 1 [51840/60000 (86%)]\tLoss: 0.615992\n",
      "Train Epoch: 1 [52480/60000 (87%)]\tLoss: 0.819109\n",
      "Train Epoch: 1 [53120/60000 (88%)]\tLoss: 0.692089\n",
      "Train Epoch: 1 [53760/60000 (90%)]\tLoss: 0.728472\n",
      "Train Epoch: 1 [54400/60000 (91%)]\tLoss: 0.584234\n",
      "Train Epoch: 1 [55040/60000 (92%)]\tLoss: 0.915223\n",
      "Train Epoch: 1 [55680/60000 (93%)]\tLoss: 0.551483\n",
      "Train Epoch: 1 [56320/60000 (94%)]\tLoss: 0.683059\n",
      "Train Epoch: 1 [56960/60000 (95%)]\tLoss: 0.716676\n",
      "Train Epoch: 1 [57600/60000 (96%)]\tLoss: 0.688263\n",
      "Train Epoch: 1 [58240/60000 (97%)]\tLoss: 0.562484\n",
      "Train Epoch: 1 [58880/60000 (98%)]\tLoss: 0.593397\n",
      "Train Epoch: 1 [59520/60000 (99%)]\tLoss: 0.602032\n",
      "\n",
      "Test set: Avg. loss: 0.2604, Accuracy: 9253/10000 (93%)\n",
      "\n",
      "Train Epoch: 2 [0/60000 (0%)]\tLoss: 0.564732\n",
      "Train Epoch: 2 [640/60000 (1%)]\tLoss: 0.489233\n",
      "Train Epoch: 2 [1280/60000 (2%)]\tLoss: 0.792430\n",
      "Train Epoch: 2 [1920/60000 (3%)]\tLoss: 0.618885\n",
      "Train Epoch: 2 [2560/60000 (4%)]\tLoss: 0.726963\n",
      "Train Epoch: 2 [3200/60000 (5%)]\tLoss: 0.513823\n",
      "Train Epoch: 2 [3840/60000 (6%)]\tLoss: 0.794110\n",
      "Train Epoch: 2 [4480/60000 (7%)]\tLoss: 0.737902\n",
      "Train Epoch: 2 [5120/60000 (9%)]\tLoss: 0.597579\n",
      "Train Epoch: 2 [5760/60000 (10%)]\tLoss: 0.557064\n",
      "Train Epoch: 2 [6400/60000 (11%)]\tLoss: 0.678597\n",
      "Train Epoch: 2 [7040/60000 (12%)]\tLoss: 0.734864\n",
      "Train Epoch: 2 [7680/60000 (13%)]\tLoss: 0.647548\n",
      "Train Epoch: 2 [8320/60000 (14%)]\tLoss: 0.767372\n",
      "Train Epoch: 2 [8960/60000 (15%)]\tLoss: 0.486507\n",
      "Train Epoch: 2 [9600/60000 (16%)]\tLoss: 0.681748\n",
      "Train Epoch: 2 [10240/60000 (17%)]\tLoss: 0.648659\n",
      "Train Epoch: 2 [10880/60000 (18%)]\tLoss: 0.423239\n",
      "Train Epoch: 2 [11520/60000 (19%)]\tLoss: 0.678504\n",
      "Train Epoch: 2 [12160/60000 (20%)]\tLoss: 0.519882\n",
      "Train Epoch: 2 [12800/60000 (21%)]\tLoss: 0.444677\n",
      "Train Epoch: 2 [13440/60000 (22%)]\tLoss: 0.533379\n",
      "Train Epoch: 2 [14080/60000 (23%)]\tLoss: 0.431355\n",
      "Train Epoch: 2 [14720/60000 (25%)]\tLoss: 0.638779\n",
      "Train Epoch: 2 [15360/60000 (26%)]\tLoss: 0.568295\n",
      "Train Epoch: 2 [16000/60000 (27%)]\tLoss: 0.625370\n",
      "Train Epoch: 2 [16640/60000 (28%)]\tLoss: 0.641220\n",
      "Train Epoch: 2 [17280/60000 (29%)]\tLoss: 0.401933\n",
      "Train Epoch: 2 [17920/60000 (30%)]\tLoss: 0.572336\n",
      "Train Epoch: 2 [18560/60000 (31%)]\tLoss: 0.465039\n",
      "Train Epoch: 2 [19200/60000 (32%)]\tLoss: 0.718481\n",
      "Train Epoch: 2 [19840/60000 (33%)]\tLoss: 0.582114\n",
      "Train Epoch: 2 [20480/60000 (34%)]\tLoss: 0.518306\n",
      "Train Epoch: 2 [21120/60000 (35%)]\tLoss: 0.545575\n",
      "Train Epoch: 2 [21760/60000 (36%)]\tLoss: 0.545777\n",
      "Train Epoch: 2 [22400/60000 (37%)]\tLoss: 0.350474\n",
      "Train Epoch: 2 [23040/60000 (38%)]\tLoss: 0.889365\n",
      "Train Epoch: 2 [23680/60000 (39%)]\tLoss: 0.623383\n",
      "Train Epoch: 2 [24320/60000 (41%)]\tLoss: 0.541593\n",
      "Train Epoch: 2 [24960/60000 (42%)]\tLoss: 0.629538\n",
      "Train Epoch: 2 [25600/60000 (43%)]\tLoss: 0.506351\n",
      "Train Epoch: 2 [26240/60000 (44%)]\tLoss: 0.533704\n",
      "Train Epoch: 2 [26880/60000 (45%)]\tLoss: 0.522924\n",
      "Train Epoch: 2 [27520/60000 (46%)]\tLoss: 0.798365\n",
      "Train Epoch: 2 [28160/60000 (47%)]\tLoss: 0.655645\n",
      "Train Epoch: 2 [28800/60000 (48%)]\tLoss: 0.558900\n",
      "Train Epoch: 2 [29440/60000 (49%)]\tLoss: 0.547259\n",
      "Train Epoch: 2 [30080/60000 (50%)]\tLoss: 0.446561\n",
      "Train Epoch: 2 [30720/60000 (51%)]\tLoss: 0.514044\n",
      "Train Epoch: 2 [31360/60000 (52%)]\tLoss: 0.445226\n",
      "Train Epoch: 2 [32000/60000 (53%)]\tLoss: 0.726525\n",
      "Train Epoch: 2 [32640/60000 (54%)]\tLoss: 0.490946\n",
      "Train Epoch: 2 [33280/60000 (55%)]\tLoss: 0.646458\n",
      "Train Epoch: 2 [33920/60000 (57%)]\tLoss: 0.586746\n",
      "Train Epoch: 2 [34560/60000 (58%)]\tLoss: 0.567523\n",
      "Train Epoch: 2 [35200/60000 (59%)]\tLoss: 0.595651\n",
      "Train Epoch: 2 [35840/60000 (60%)]\tLoss: 0.647363\n",
      "Train Epoch: 2 [36480/60000 (61%)]\tLoss: 0.645050\n",
      "Train Epoch: 2 [37120/60000 (62%)]\tLoss: 0.473445\n",
      "Train Epoch: 2 [37760/60000 (63%)]\tLoss: 0.550519\n",
      "Train Epoch: 2 [38400/60000 (64%)]\tLoss: 0.611020\n",
      "Train Epoch: 2 [39040/60000 (65%)]\tLoss: 0.416302\n",
      "Train Epoch: 2 [39680/60000 (66%)]\tLoss: 0.551238\n",
      "Train Epoch: 2 [40320/60000 (67%)]\tLoss: 0.635741\n",
      "Train Epoch: 2 [40960/60000 (68%)]\tLoss: 0.424504\n",
      "Train Epoch: 2 [41600/60000 (69%)]\tLoss: 0.575786\n",
      "Train Epoch: 2 [42240/60000 (70%)]\tLoss: 0.502723\n",
      "Train Epoch: 2 [42880/60000 (71%)]\tLoss: 0.403241\n",
      "Train Epoch: 2 [43520/60000 (72%)]\tLoss: 0.616900\n",
      "Train Epoch: 2 [44160/60000 (74%)]\tLoss: 0.469262\n",
      "Train Epoch: 2 [44800/60000 (75%)]\tLoss: 0.657005\n",
      "Train Epoch: 2 [45440/60000 (76%)]\tLoss: 0.390503\n",
      "Train Epoch: 2 [46080/60000 (77%)]\tLoss: 0.820284\n",
      "Train Epoch: 2 [46720/60000 (78%)]\tLoss: 0.347642\n",
      "Train Epoch: 2 [47360/60000 (79%)]\tLoss: 0.413845\n",
      "Train Epoch: 2 [48000/60000 (80%)]\tLoss: 0.414205\n",
      "Train Epoch: 2 [48640/60000 (81%)]\tLoss: 0.456942\n",
      "Train Epoch: 2 [49280/60000 (82%)]\tLoss: 0.396292\n",
      "Train Epoch: 2 [49920/60000 (83%)]\tLoss: 0.557701\n",
      "Train Epoch: 2 [50560/60000 (84%)]\tLoss: 0.554415\n",
      "Train Epoch: 2 [51200/60000 (85%)]\tLoss: 0.421956\n",
      "Train Epoch: 2 [51840/60000 (86%)]\tLoss: 0.409538\n",
      "Train Epoch: 2 [52480/60000 (87%)]\tLoss: 0.473961\n",
      "Train Epoch: 2 [53120/60000 (88%)]\tLoss: 0.477296\n",
      "Train Epoch: 2 [53760/60000 (90%)]\tLoss: 0.356163\n",
      "Train Epoch: 2 [54400/60000 (91%)]\tLoss: 0.363742\n",
      "Train Epoch: 2 [55040/60000 (92%)]\tLoss: 0.403167\n",
      "Train Epoch: 2 [55680/60000 (93%)]\tLoss: 0.472711\n",
      "Train Epoch: 2 [56320/60000 (94%)]\tLoss: 0.442265\n",
      "Train Epoch: 2 [56960/60000 (95%)]\tLoss: 0.325307\n",
      "Train Epoch: 2 [57600/60000 (96%)]\tLoss: 0.380241\n",
      "Train Epoch: 2 [58240/60000 (97%)]\tLoss: 0.347308\n",
      "Train Epoch: 2 [58880/60000 (98%)]\tLoss: 0.554463\n",
      "Train Epoch: 2 [59520/60000 (99%)]\tLoss: 0.617803\n",
      "\n",
      "Test set: Avg. loss: 0.1509, Accuracy: 9545/10000 (95%)\n",
      "\n",
      "Train Epoch: 3 [0/60000 (0%)]\tLoss: 0.391243\n",
      "Train Epoch: 3 [640/60000 (1%)]\tLoss: 0.328851\n",
      "Train Epoch: 3 [1280/60000 (2%)]\tLoss: 0.473471\n",
      "Train Epoch: 3 [1920/60000 (3%)]\tLoss: 0.430604\n",
      "Train Epoch: 3 [2560/60000 (4%)]\tLoss: 0.376938\n",
      "Train Epoch: 3 [3200/60000 (5%)]\tLoss: 0.464676\n",
      "Train Epoch: 3 [3840/60000 (6%)]\tLoss: 0.523275\n",
      "Train Epoch: 3 [4480/60000 (7%)]\tLoss: 0.476950\n",
      "Train Epoch: 3 [5120/60000 (9%)]\tLoss: 0.519196\n",
      "Train Epoch: 3 [5760/60000 (10%)]\tLoss: 0.424237\n",
      "Train Epoch: 3 [6400/60000 (11%)]\tLoss: 0.434919\n",
      "Train Epoch: 3 [7040/60000 (12%)]\tLoss: 0.247962\n",
      "Train Epoch: 3 [7680/60000 (13%)]\tLoss: 0.543086\n",
      "Train Epoch: 3 [8320/60000 (14%)]\tLoss: 0.704618\n",
      "Train Epoch: 3 [8960/60000 (15%)]\tLoss: 0.411657\n",
      "Train Epoch: 3 [9600/60000 (16%)]\tLoss: 0.395288\n",
      "Train Epoch: 3 [10240/60000 (17%)]\tLoss: 0.440333\n",
      "Train Epoch: 3 [10880/60000 (18%)]\tLoss: 0.398944\n",
      "Train Epoch: 3 [11520/60000 (19%)]\tLoss: 0.375321\n",
      "Train Epoch: 3 [12160/60000 (20%)]\tLoss: 0.305888\n",
      "Train Epoch: 3 [12800/60000 (21%)]\tLoss: 0.473789\n",
      "Train Epoch: 3 [13440/60000 (22%)]\tLoss: 0.530959\n",
      "Train Epoch: 3 [14080/60000 (23%)]\tLoss: 0.482572\n",
      "Train Epoch: 3 [14720/60000 (25%)]\tLoss: 0.350305\n",
      "Train Epoch: 3 [15360/60000 (26%)]\tLoss: 0.560233\n",
      "Train Epoch: 3 [16000/60000 (27%)]\tLoss: 0.405580\n",
      "Train Epoch: 3 [16640/60000 (28%)]\tLoss: 0.258942\n",
      "Train Epoch: 3 [17280/60000 (29%)]\tLoss: 0.350989\n",
      "Train Epoch: 3 [17920/60000 (30%)]\tLoss: 0.560852\n",
      "Train Epoch: 3 [18560/60000 (31%)]\tLoss: 0.355387\n",
      "Train Epoch: 3 [19200/60000 (32%)]\tLoss: 0.631481\n",
      "Train Epoch: 3 [19840/60000 (33%)]\tLoss: 0.375488\n",
      "Train Epoch: 3 [20480/60000 (34%)]\tLoss: 0.478973\n",
      "Train Epoch: 3 [21120/60000 (35%)]\tLoss: 0.493258\n",
      "Train Epoch: 3 [21760/60000 (36%)]\tLoss: 0.621646\n",
      "Train Epoch: 3 [22400/60000 (37%)]\tLoss: 0.475669\n",
      "Train Epoch: 3 [23040/60000 (38%)]\tLoss: 0.417092\n",
      "Train Epoch: 3 [23680/60000 (39%)]\tLoss: 0.482106\n",
      "Train Epoch: 3 [24320/60000 (41%)]\tLoss: 0.390990\n",
      "Train Epoch: 3 [24960/60000 (42%)]\tLoss: 0.389821\n",
      "Train Epoch: 3 [25600/60000 (43%)]\tLoss: 0.353778\n",
      "Train Epoch: 3 [26240/60000 (44%)]\tLoss: 0.430611\n",
      "Train Epoch: 3 [26880/60000 (45%)]\tLoss: 0.391981\n",
      "Train Epoch: 3 [27520/60000 (46%)]\tLoss: 0.237139\n",
      "Train Epoch: 3 [28160/60000 (47%)]\tLoss: 0.473785\n",
      "Train Epoch: 3 [28800/60000 (48%)]\tLoss: 0.573074\n",
      "Train Epoch: 3 [29440/60000 (49%)]\tLoss: 0.383933\n",
      "Train Epoch: 3 [30080/60000 (50%)]\tLoss: 0.506032\n",
      "Train Epoch: 3 [30720/60000 (51%)]\tLoss: 0.291771\n",
      "Train Epoch: 3 [31360/60000 (52%)]\tLoss: 0.387133\n",
      "Train Epoch: 3 [32000/60000 (53%)]\tLoss: 0.298573\n",
      "Train Epoch: 3 [32640/60000 (54%)]\tLoss: 0.662742\n",
      "Train Epoch: 3 [33280/60000 (55%)]\tLoss: 0.430441\n",
      "Train Epoch: 3 [33920/60000 (57%)]\tLoss: 0.552478\n",
      "Train Epoch: 3 [34560/60000 (58%)]\tLoss: 0.469478\n",
      "Train Epoch: 3 [35200/60000 (59%)]\tLoss: 0.602272\n",
      "Train Epoch: 3 [35840/60000 (60%)]\tLoss: 0.548230\n",
      "Train Epoch: 3 [36480/60000 (61%)]\tLoss: 0.306063\n",
      "Train Epoch: 3 [37120/60000 (62%)]\tLoss: 0.458828\n",
      "Train Epoch: 3 [37760/60000 (63%)]\tLoss: 0.352753\n",
      "Train Epoch: 3 [38400/60000 (64%)]\tLoss: 0.455021\n",
      "Train Epoch: 3 [39040/60000 (65%)]\tLoss: 0.245029\n",
      "Train Epoch: 3 [39680/60000 (66%)]\tLoss: 0.684855\n",
      "Train Epoch: 3 [40320/60000 (67%)]\tLoss: 0.356896\n",
      "Train Epoch: 3 [40960/60000 (68%)]\tLoss: 0.338230\n",
      "Train Epoch: 3 [41600/60000 (69%)]\tLoss: 0.409056\n",
      "Train Epoch: 3 [42240/60000 (70%)]\tLoss: 0.351110\n",
      "Train Epoch: 3 [42880/60000 (71%)]\tLoss: 0.275143\n",
      "Train Epoch: 3 [43520/60000 (72%)]\tLoss: 0.235793\n",
      "Train Epoch: 3 [44160/60000 (74%)]\tLoss: 0.187927\n",
      "Train Epoch: 3 [44800/60000 (75%)]\tLoss: 0.430709\n",
      "Train Epoch: 3 [45440/60000 (76%)]\tLoss: 0.225208\n",
      "Train Epoch: 3 [46080/60000 (77%)]\tLoss: 0.467721\n",
      "Train Epoch: 3 [46720/60000 (78%)]\tLoss: 0.417082\n",
      "Train Epoch: 3 [47360/60000 (79%)]\tLoss: 0.712356\n",
      "Train Epoch: 3 [48000/60000 (80%)]\tLoss: 0.511407\n",
      "Train Epoch: 3 [48640/60000 (81%)]\tLoss: 0.299622\n",
      "Train Epoch: 3 [49280/60000 (82%)]\tLoss: 0.431532\n",
      "Train Epoch: 3 [49920/60000 (83%)]\tLoss: 0.382376\n",
      "Train Epoch: 3 [50560/60000 (84%)]\tLoss: 0.418330\n",
      "Train Epoch: 3 [51200/60000 (85%)]\tLoss: 0.437945\n",
      "Train Epoch: 3 [51840/60000 (86%)]\tLoss: 0.415680\n",
      "Train Epoch: 3 [52480/60000 (87%)]\tLoss: 0.405341\n",
      "Train Epoch: 3 [53120/60000 (88%)]\tLoss: 0.245722\n",
      "Train Epoch: 3 [53760/60000 (90%)]\tLoss: 0.327964\n",
      "Train Epoch: 3 [54400/60000 (91%)]\tLoss: 0.301231\n",
      "Train Epoch: 3 [55040/60000 (92%)]\tLoss: 0.350203\n",
      "Train Epoch: 3 [55680/60000 (93%)]\tLoss: 0.350643\n",
      "Train Epoch: 3 [56320/60000 (94%)]\tLoss: 0.333721\n",
      "Train Epoch: 3 [56960/60000 (95%)]\tLoss: 0.409423\n",
      "Train Epoch: 3 [57600/60000 (96%)]\tLoss: 0.392147\n",
      "Train Epoch: 3 [58240/60000 (97%)]\tLoss: 0.178717\n",
      "Train Epoch: 3 [58880/60000 (98%)]\tLoss: 0.148810\n",
      "Train Epoch: 3 [59520/60000 (99%)]\tLoss: 0.444101\n",
      "\n",
      "Test set: Avg. loss: 0.1132, Accuracy: 9650/10000 (96%)\n",
      "\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "Text(0.5, 1.0, 'add conv')"
      ]
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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IfP4mmuukeOPP964l0CvXr2kVatWMmzYMOnYsaNxY33//ffy0ksvxfNQkgoGFRNCCEll4mq5GTVqlHEVtW7dWsqXL59xGz9+fMY6v/32m2zcuDHjeYsWLYwggphp2LChvP/++zJlypSgQcjEH9a6IYQQksrE1XITTomd2bNnZ1l26aWXmhuJDlpuCCGEpDIJEVBM4iNuaLkhhBCSilDcpCEMKCaEEJLKUNykseVGC/kRQgghqQTFTRqCAs9ayM+K1SaEEEJSAoqbNC3kV6WK83j16niPhhBCCIktFDdpSq1azv2KFfEeCSGEEBJbKG7SlNq1nfuVK+M9EkIIISS2UNykubih5YYQQkiqQXGTptAtRQghJFWhuElzy8369eiqLvLll6gYHe9REUIIIdmH4iZNOe44kZIlHUFz/PEirVuLuJqtE0IIIUkJxU2akidPpvXm0CHnfsaMuA6JEEIIiQkUN2mMihtCCCEklaC4SWM0qFjZtCleIyGEEEJiB8VNGtOihf9zihtCCCGpAMVNGtOypcj8+SLjxjnPkTVFCCGEJDtHxXsAJL6cdprI0Uc7j2m5IYQQkgrQckOkXDnnfvPmzMwpQgghJFmhuCGm5g1Sww8fFvn773iPhhBCCMllcfPvv//K3r17M56vX79eRowYIdOmTcvmUEi8OOookdKlncd0TRFCCEk7cdO5c2d54403zON//vlHTjvtNBk2bJhZPmrUqJwYI8lF1xTFDSGEkLQTN4sWLZIzzzzTPH7//felbNmyxnoDwfPMM8/kxBhJLkBxQwghJG3FDVxSxYoVM4/hirroooskb9680qxZMyNySHJStqxzz3RwQgghaSduatSoIVOmTJENGzbI559/Lu3atTPLN2/eLMWLF8+JMZJcgJYbQgghaStu+vfvL3fffbdUrVrVxNs0b948w4rTuHHjnBgjyQUobgghhKRtEb9LLrlEzjjjDNm4caM0bNgwY/k555wjF154YazHR3JZ3NAtRQghJC0rFJcrV87cwM6dO+WLL76QWrVqSW22mU76mBtabgghhKSdW+qyyy6T5557LqPmzSmnnGKWNWjQQCZOnJgTYyS5AN1ShBBC0lbczJkzJyMVfPLkyeLz+Uy9G6SBP/roozkxRpILHHusc799u4jPF+/REEIIIbkobnbs2CHHHHOMeTx16lS5+OKLpXDh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q1b5rbNt2zbp1q2bKVxWsmRJufHGG2X37t1+6yxdulTOPPNMcxyo4vrkk09mGct7771nPmNYp379+vLpp59GPJZYHPd///0n9913nxlDkSJFzDrXXHONqdge6nMyZMiQhD7uUMcOrrvuuizH1aFDh5S+5sDrfx63oUOHSrJf86AgW4pkj3HjxvmOPvpo32uvveZbtmyZ76abbvKVLFnS99dff/kSlfbt2/vGjBnj++mnn3xLlizxnXfeeb7KlSv7du/enbFOq1atzLFs3Lgx47Zjx46M1w8ePOirV6+er02bNr7Fixf7Pv30U1/p0qV9/fr1y1hnzZo1vsKFC/v69Onj+/nnn33PPvusL1++fL6pU6fG5fwNGDDAV7duXb9j2rJlS8brt956q69SpUq+mTNn+r7//ntfs2bNfC1atEjqY1Y2b97sd9zTp09HpqRv1qxZKXe9Mbb//e9/vkmTJpljnDx5st/rQ4YM8ZUoUcI3ZcoU3w8//ODr1KmTr1q1ar5///03Y50OHTr4GjZs6Js/f75v7ty5vho1aviuuOKKjNdxbsqWLevr1q2b+T969913fYUKFfK9+OKLGet8/fXX5viffPJJcz4efPBBX/78+X0//vhjRGOJxXH/888/5tqNHz/et2LFCt+8efN8TZs29TVp0sRvG1WqVPE98sgjfp8D+3shEY871LGDa6+91lxT+7i2bdvmt06qXXNgHy9u+L/LkyePb/Xq1b5kv+bBoLiJAfiCuP322zOeHzp0yFehQgXf4MGDfckCJj78Y3z55ZcZyzDZ9erVK+g/Vd68eX2bNm3KWDZq1Chf8eLFffv37zfP7733XiMmbLp27WrEVTzOH8QNvry8wJc//hnfe++9jGXLly835wUTQbIecyBwbU844QTf4cOHU/Z6A/cXPo63XLlyvqFDh/pd+wIFCpgvbYAvZ7zvu+++y1jns88+M5PCH3/8YZ6/8MILvlKlSmUcO7jvvvt8tWrVynh+2WWX+Tp27Og3ntNOO813yy23hD2WWB23F99++61Zb/369X4T3dNPPx3wPYl+3CCQuOncuXPA96TLNe/cubPv7LPP9luWCtfcDd1S2eTAgQOycOFCY16z+1fh+bx58yRZ2LFjh7k/5phj/Ja//fbbUrp0aalXr57069dP9u7dm/Eajg+mx7Jly2Ysa9++vWm0tmzZ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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "n_epochs = 3\n",
    "batch_size_train = 64\n",
    "batch_size_test = 1000\n",
    "learning_rate = 0.01\n",
    "momentum = 0.5\n",
    "log_interval = 10\n",
    "random_seed = 1\n",
    "torch.backends.cudnn.enabled = False\n",
    "torch.manual_seed(random_seed)\n",
    "\n",
    "train_loader = torch.utils.data.DataLoader(\n",
    "  torchvision.datasets.MNIST('/files/', train=True, download=True,\n",
    "                             transform=torchvision.transforms.Compose([\n",
    "                               torchvision.transforms.ToTensor(),\n",
    "                               torchvision.transforms.Normalize(\n",
    "                                 (0.1307,), (0.3081,))\n",
    "                             ])),\n",
    "  batch_size=batch_size_train, shuffle=True)\n",
    "test_loader = torch.utils.data.DataLoader(\n",
    "  torchvision.datasets.MNIST('/files/', train=False, download=True,\n",
    "                             transform=torchvision.transforms.Compose([\n",
    "                               torchvision.transforms.ToTensor(),\n",
    "                               torchvision.transforms.Normalize(\n",
    "                                 (0.1307,), (0.3081,))\n",
    "                             ])),\n",
    "  batch_size=batch_size_test, shuffle=True)\n",
    "\n",
    "examples = enumerate(test_loader)\n",
    "batch_idx, (example_data, example_targets) = next(examples)\n",
    "\n",
    "class Net(nn.Module):\n",
    "    def __init__(self):\n",
    "        super(Net, self).__init__()\n",
    "        self.conv1 = nn.Conv2d(1, 10, kernel_size=5)\n",
    "        self.conv2 = nn.Conv2d(10, 20, kernel_size=5)\n",
    "        self.conv3 = nn.Conv2d(20, 30, kernel_size=3) #新增\n",
    "        self.conv2_drop = nn.Dropout2d()\n",
    "        self.fc1 = nn.Linear(30, 20)\n",
    "        self.fc2 = nn.Linear(20, 10)\n",
    "\n",
    "    def forward(self, x):\n",
    "        x = F.relu(F.max_pool2d(self.conv1(x), 2))\n",
    "        x = F.relu(F.max_pool2d(self.conv2(x), 2))\n",
    "        x = F.relu(F.max_pool2d(self.conv3(x), 2)) #新增\n",
    "        x = x.view(-1, 30)\n",
    "        x = F.relu(self.fc1(x))\n",
    "        x = F.dropout(x, training=self.training)\n",
    "        x = self.fc2(x)\n",
    "        return F.log_softmax(x, dim=1)\n",
    "    \n",
    "network = Net()\n",
    "optimizer = optim.SGD(network.parameters(), lr=learning_rate,\n",
    "                      momentum=momentum)\n",
    "\n",
    "train_losses = []\n",
    "train_counter = []\n",
    "test_losses = []\n",
    "test_counter = [i*len(train_loader.dataset) for i in range(n_epochs + 1)]\n",
    "\n",
    "def train(epoch):\n",
    "  network.train()\n",
    "  for batch_idx, (data, target) in enumerate(train_loader):\n",
    "    optimizer.zero_grad()\n",
    "    output = network(data)\n",
    "    loss = F.nll_loss(output, target)\n",
    "    loss.backward()\n",
    "    optimizer.step()\n",
    "    if batch_idx % log_interval == 0:\n",
    "      print('Train Epoch: {} [{}/{} ({:.0f}%)]\\tLoss: {:.6f}'.format(\n",
    "        epoch, batch_idx * len(data), len(train_loader.dataset),\n",
    "        100. * batch_idx / len(train_loader), loss.item()))\n",
    "      train_losses.append(loss.item())\n",
    "      train_counter.append(\n",
    "        (batch_idx*64) + ((epoch-1)*len(train_loader.dataset)))\n",
    "      torch.save(network.state_dict(), '/homework/model.pth')\n",
    "      torch.save(optimizer.state_dict(), '/homework/optimizer.pth')\n",
    "\n",
    "def test():\n",
    "  network.eval()\n",
    "  test_loss = 0\n",
    "  correct = 0\n",
    "  with torch.no_grad():\n",
    "    for data, target in test_loader:\n",
    "      output = network(data)\n",
    "      test_loss += F.nll_loss(output, target, size_average=False).item()\n",
    "      pred = output.data.max(1, keepdim=True)[1]\n",
    "      correct += pred.eq(target.data.view_as(pred)).sum()\n",
    "  test_loss /= len(test_loader.dataset)\n",
    "  test_losses.append(test_loss)\n",
    "  print('\\nTest set: Avg. loss: {:.4f}, Accuracy: {}/{} ({:.0f}%)\\n'.format(\n",
    "    test_loss, correct, len(test_loader.dataset),\n",
    "    100. * correct / len(test_loader.dataset)))\n",
    "  \n",
    "test()\n",
    "for epoch in range(1, n_epochs + 1):\n",
    "  train(epoch)\n",
    "  test()\n",
    "\n",
    "fig = plt.figure()\n",
    "plt.plot(train_counter, train_losses, color='blue')\n",
    "plt.scatter(test_counter, test_losses, color='red')\n",
    "plt.legend(['Train Loss', 'Test Loss'], loc='upper right')\n",
    "plt.xlabel('number of training examples seen')\n",
    "plt.ylabel('negative log likelihood loss')\n",
    "plt.title(\"add conv\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 加一个FC层"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "d:\\anaconda\\envs\\pytorch\\Lib\\site-packages\\torch\\nn\\_reduction.py:51: UserWarning: size_average and reduce args will be deprecated, please use reduction='sum' instead.\n",
      "  warnings.warn(warning.format(ret))\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "Test set: Avg. loss: 2.3176, Accuracy: 971/10000 (10%)\n",
      "\n",
      "Train Epoch: 1 [0/60000 (0%)]\tLoss: 2.335759\n",
      "Train Epoch: 1 [640/60000 (1%)]\tLoss: 2.280918\n",
      "Train Epoch: 1 [1280/60000 (2%)]\tLoss: 2.288145\n",
      "Train Epoch: 1 [1920/60000 (3%)]\tLoss: 2.317081\n",
      "Train Epoch: 1 [2560/60000 (4%)]\tLoss: 2.311618\n",
      "Train Epoch: 1 [3200/60000 (5%)]\tLoss: 2.319265\n",
      "Train Epoch: 1 [3840/60000 (6%)]\tLoss: 2.309034\n",
      "Train Epoch: 1 [4480/60000 (7%)]\tLoss: 2.289052\n",
      "Train Epoch: 1 [5120/60000 (9%)]\tLoss: 2.285727\n",
      "Train Epoch: 1 [5760/60000 (10%)]\tLoss: 2.296575\n",
      "Train Epoch: 1 [6400/60000 (11%)]\tLoss: 2.271264\n",
      "Train Epoch: 1 [7040/60000 (12%)]\tLoss: 2.220819\n",
      "Train Epoch: 1 [7680/60000 (13%)]\tLoss: 2.217657\n",
      "Train Epoch: 1 [8320/60000 (14%)]\tLoss: 2.221002\n",
      "Train Epoch: 1 [8960/60000 (15%)]\tLoss: 2.189158\n",
      "Train Epoch: 1 [9600/60000 (16%)]\tLoss: 2.177974\n",
      "Train Epoch: 1 [10240/60000 (17%)]\tLoss: 2.173286\n",
      "Train Epoch: 1 [10880/60000 (18%)]\tLoss: 2.130348\n",
      "Train Epoch: 1 [11520/60000 (19%)]\tLoss: 2.097800\n",
      "Train Epoch: 1 [12160/60000 (20%)]\tLoss: 1.983690\n",
      "Train Epoch: 1 [12800/60000 (21%)]\tLoss: 1.938072\n",
      "Train Epoch: 1 [13440/60000 (22%)]\tLoss: 1.889725\n",
      "Train Epoch: 1 [14080/60000 (23%)]\tLoss: 1.722426\n",
      "Train Epoch: 1 [14720/60000 (25%)]\tLoss: 1.718863\n",
      "Train Epoch: 1 [15360/60000 (26%)]\tLoss: 1.557230\n",
      "Train Epoch: 1 [16000/60000 (27%)]\tLoss: 1.611880\n",
      "Train Epoch: 1 [16640/60000 (28%)]\tLoss: 1.496996\n",
      "Train Epoch: 1 [17280/60000 (29%)]\tLoss: 1.496535\n",
      "Train Epoch: 1 [17920/60000 (30%)]\tLoss: 1.230070\n",
      "Train Epoch: 1 [18560/60000 (31%)]\tLoss: 1.268303\n",
      "Train Epoch: 1 [19200/60000 (32%)]\tLoss: 1.127005\n",
      "Train Epoch: 1 [19840/60000 (33%)]\tLoss: 1.105212\n",
      "Train Epoch: 1 [20480/60000 (34%)]\tLoss: 0.982143\n",
      "Train Epoch: 1 [21120/60000 (35%)]\tLoss: 1.140655\n",
      "Train Epoch: 1 [21760/60000 (36%)]\tLoss: 0.941392\n",
      "Train Epoch: 1 [22400/60000 (37%)]\tLoss: 0.957356\n",
      "Train Epoch: 1 [23040/60000 (38%)]\tLoss: 0.830960\n",
      "Train Epoch: 1 [23680/60000 (39%)]\tLoss: 1.176404\n",
      "Train Epoch: 1 [24320/60000 (41%)]\tLoss: 0.817176\n",
      "Train Epoch: 1 [24960/60000 (42%)]\tLoss: 0.944595\n",
      "Train Epoch: 1 [25600/60000 (43%)]\tLoss: 0.825121\n",
      "Train Epoch: 1 [26240/60000 (44%)]\tLoss: 0.710918\n",
      "Train Epoch: 1 [26880/60000 (45%)]\tLoss: 0.924019\n",
      "Train Epoch: 1 [27520/60000 (46%)]\tLoss: 1.007285\n",
      "Train Epoch: 1 [28160/60000 (47%)]\tLoss: 0.581918\n",
      "Train Epoch: 1 [28800/60000 (48%)]\tLoss: 0.846057\n",
      "Train Epoch: 1 [29440/60000 (49%)]\tLoss: 0.873450\n",
      "Train Epoch: 1 [30080/60000 (50%)]\tLoss: 0.605860\n",
      "Train Epoch: 1 [30720/60000 (51%)]\tLoss: 0.939994\n",
      "Train Epoch: 1 [31360/60000 (52%)]\tLoss: 0.764195\n",
      "Train Epoch: 1 [32000/60000 (53%)]\tLoss: 0.727632\n",
      "Train Epoch: 1 [32640/60000 (54%)]\tLoss: 0.624388\n",
      "Train Epoch: 1 [33280/60000 (55%)]\tLoss: 0.481005\n",
      "Train Epoch: 1 [33920/60000 (57%)]\tLoss: 0.595919\n",
      "Train Epoch: 1 [34560/60000 (58%)]\tLoss: 0.604556\n",
      "Train Epoch: 1 [35200/60000 (59%)]\tLoss: 0.636826\n",
      "Train Epoch: 1 [35840/60000 (60%)]\tLoss: 0.635267\n",
      "Train Epoch: 1 [36480/60000 (61%)]\tLoss: 0.977330\n",
      "Train Epoch: 1 [37120/60000 (62%)]\tLoss: 0.468718\n",
      "Train Epoch: 1 [37760/60000 (63%)]\tLoss: 0.480443\n",
      "Train Epoch: 1 [38400/60000 (64%)]\tLoss: 0.743872\n",
      "Train Epoch: 1 [39040/60000 (65%)]\tLoss: 0.834157\n",
      "Train Epoch: 1 [39680/60000 (66%)]\tLoss: 0.643010\n",
      "Train Epoch: 1 [40320/60000 (67%)]\tLoss: 0.724142\n",
      "Train Epoch: 1 [40960/60000 (68%)]\tLoss: 0.535849\n",
      "Train Epoch: 1 [41600/60000 (69%)]\tLoss: 0.430352\n",
      "Train Epoch: 1 [42240/60000 (70%)]\tLoss: 0.349290\n",
      "Train Epoch: 1 [42880/60000 (71%)]\tLoss: 0.582556\n",
      "Train Epoch: 1 [43520/60000 (72%)]\tLoss: 0.628092\n",
      "Train Epoch: 1 [44160/60000 (74%)]\tLoss: 1.008914\n",
      "Train Epoch: 1 [44800/60000 (75%)]\tLoss: 0.518688\n",
      "Train Epoch: 1 [45440/60000 (76%)]\tLoss: 0.565533\n",
      "Train Epoch: 1 [46080/60000 (77%)]\tLoss: 0.415464\n",
      "Train Epoch: 1 [46720/60000 (78%)]\tLoss: 0.400667\n",
      "Train Epoch: 1 [47360/60000 (79%)]\tLoss: 0.366936\n",
      "Train Epoch: 1 [48000/60000 (80%)]\tLoss: 0.375330\n",
      "Train Epoch: 1 [48640/60000 (81%)]\tLoss: 0.332286\n",
      "Train Epoch: 1 [49280/60000 (82%)]\tLoss: 0.587718\n",
      "Train Epoch: 1 [49920/60000 (83%)]\tLoss: 0.452893\n",
      "Train Epoch: 1 [50560/60000 (84%)]\tLoss: 0.320569\n",
      "Train Epoch: 1 [51200/60000 (85%)]\tLoss: 0.572749\n",
      "Train Epoch: 1 [51840/60000 (86%)]\tLoss: 0.454284\n",
      "Train Epoch: 1 [52480/60000 (87%)]\tLoss: 0.502658\n",
      "Train Epoch: 1 [53120/60000 (88%)]\tLoss: 0.332521\n",
      "Train Epoch: 1 [53760/60000 (90%)]\tLoss: 0.389560\n",
      "Train Epoch: 1 [54400/60000 (91%)]\tLoss: 0.459568\n",
      "Train Epoch: 1 [55040/60000 (92%)]\tLoss: 0.575569\n",
      "Train Epoch: 1 [55680/60000 (93%)]\tLoss: 0.361508\n",
      "Train Epoch: 1 [56320/60000 (94%)]\tLoss: 0.417059\n",
      "Train Epoch: 1 [56960/60000 (95%)]\tLoss: 0.592561\n",
      "Train Epoch: 1 [57600/60000 (96%)]\tLoss: 0.218690\n",
      "Train Epoch: 1 [58240/60000 (97%)]\tLoss: 0.479489\n",
      "Train Epoch: 1 [58880/60000 (98%)]\tLoss: 0.354340\n",
      "Train Epoch: 1 [59520/60000 (99%)]\tLoss: 0.407005\n",
      "\n",
      "Test set: Avg. loss: 0.1997, Accuracy: 9421/10000 (94%)\n",
      "\n",
      "Train Epoch: 2 [0/60000 (0%)]\tLoss: 0.594171\n",
      "Train Epoch: 2 [640/60000 (1%)]\tLoss: 0.392267\n",
      "Train Epoch: 2 [1280/60000 (2%)]\tLoss: 0.376118\n",
      "Train Epoch: 2 [1920/60000 (3%)]\tLoss: 0.470472\n",
      "Train Epoch: 2 [2560/60000 (4%)]\tLoss: 0.402942\n",
      "Train Epoch: 2 [3200/60000 (5%)]\tLoss: 0.516517\n",
      "Train Epoch: 2 [3840/60000 (6%)]\tLoss: 0.373149\n",
      "Train Epoch: 2 [4480/60000 (7%)]\tLoss: 0.367470\n",
      "Train Epoch: 2 [5120/60000 (9%)]\tLoss: 0.348957\n",
      "Train Epoch: 2 [5760/60000 (10%)]\tLoss: 0.311197\n",
      "Train Epoch: 2 [6400/60000 (11%)]\tLoss: 0.422429\n",
      "Train Epoch: 2 [7040/60000 (12%)]\tLoss: 0.388244\n",
      "Train Epoch: 2 [7680/60000 (13%)]\tLoss: 0.363705\n",
      "Train Epoch: 2 [8320/60000 (14%)]\tLoss: 0.277324\n",
      "Train Epoch: 2 [8960/60000 (15%)]\tLoss: 0.228084\n",
      "Train Epoch: 2 [9600/60000 (16%)]\tLoss: 0.446732\n",
      "Train Epoch: 2 [10240/60000 (17%)]\tLoss: 0.273885\n",
      "Train Epoch: 2 [10880/60000 (18%)]\tLoss: 0.229272\n",
      "Train Epoch: 2 [11520/60000 (19%)]\tLoss: 0.384902\n",
      "Train Epoch: 2 [12160/60000 (20%)]\tLoss: 0.525469\n",
      "Train Epoch: 2 [12800/60000 (21%)]\tLoss: 0.389878\n",
      "Train Epoch: 2 [13440/60000 (22%)]\tLoss: 0.489684\n",
      "Train Epoch: 2 [14080/60000 (23%)]\tLoss: 0.248248\n",
      "Train Epoch: 2 [14720/60000 (25%)]\tLoss: 0.256441\n",
      "Train Epoch: 2 [15360/60000 (26%)]\tLoss: 0.395275\n",
      "Train Epoch: 2 [16000/60000 (27%)]\tLoss: 0.296847\n",
      "Train Epoch: 2 [16640/60000 (28%)]\tLoss: 0.508179\n",
      "Train Epoch: 2 [17280/60000 (29%)]\tLoss: 0.220767\n",
      "Train Epoch: 2 [17920/60000 (30%)]\tLoss: 0.527947\n",
      "Train Epoch: 2 [18560/60000 (31%)]\tLoss: 0.416738\n",
      "Train Epoch: 2 [19200/60000 (32%)]\tLoss: 0.294115\n",
      "Train Epoch: 2 [19840/60000 (33%)]\tLoss: 0.471779\n",
      "Train Epoch: 2 [20480/60000 (34%)]\tLoss: 0.365040\n",
      "Train Epoch: 2 [21120/60000 (35%)]\tLoss: 0.366714\n",
      "Train Epoch: 2 [21760/60000 (36%)]\tLoss: 0.284441\n",
      "Train Epoch: 2 [22400/60000 (37%)]\tLoss: 0.263960\n",
      "Train Epoch: 2 [23040/60000 (38%)]\tLoss: 0.439749\n",
      "Train Epoch: 2 [23680/60000 (39%)]\tLoss: 0.205537\n",
      "Train Epoch: 2 [24320/60000 (41%)]\tLoss: 0.249323\n",
      "Train Epoch: 2 [24960/60000 (42%)]\tLoss: 0.209641\n",
      "Train Epoch: 2 [25600/60000 (43%)]\tLoss: 0.319721\n",
      "Train Epoch: 2 [26240/60000 (44%)]\tLoss: 0.369294\n",
      "Train Epoch: 2 [26880/60000 (45%)]\tLoss: 0.264265\n",
      "Train Epoch: 2 [27520/60000 (46%)]\tLoss: 0.290616\n",
      "Train Epoch: 2 [28160/60000 (47%)]\tLoss: 0.272958\n",
      "Train Epoch: 2 [28800/60000 (48%)]\tLoss: 0.219621\n",
      "Train Epoch: 2 [29440/60000 (49%)]\tLoss: 0.309262\n",
      "Train Epoch: 2 [30080/60000 (50%)]\tLoss: 0.203176\n",
      "Train Epoch: 2 [30720/60000 (51%)]\tLoss: 0.362490\n",
      "Train Epoch: 2 [31360/60000 (52%)]\tLoss: 0.498898\n",
      "Train Epoch: 2 [32000/60000 (53%)]\tLoss: 0.377832\n",
      "Train Epoch: 2 [32640/60000 (54%)]\tLoss: 0.290971\n",
      "Train Epoch: 2 [33280/60000 (55%)]\tLoss: 0.256463\n",
      "Train Epoch: 2 [33920/60000 (57%)]\tLoss: 0.224834\n",
      "Train Epoch: 2 [34560/60000 (58%)]\tLoss: 0.190813\n",
      "Train Epoch: 2 [35200/60000 (59%)]\tLoss: 0.277125\n",
      "Train Epoch: 2 [35840/60000 (60%)]\tLoss: 0.186972\n",
      "Train Epoch: 2 [36480/60000 (61%)]\tLoss: 0.192420\n",
      "Train Epoch: 2 [37120/60000 (62%)]\tLoss: 0.206980\n",
      "Train Epoch: 2 [37760/60000 (63%)]\tLoss: 0.416242\n",
      "Train Epoch: 2 [38400/60000 (64%)]\tLoss: 0.292404\n",
      "Train Epoch: 2 [39040/60000 (65%)]\tLoss: 0.329922\n",
      "Train Epoch: 2 [39680/60000 (66%)]\tLoss: 0.251569\n",
      "Train Epoch: 2 [40320/60000 (67%)]\tLoss: 0.226414\n",
      "Train Epoch: 2 [40960/60000 (68%)]\tLoss: 0.503227\n",
      "Train Epoch: 2 [41600/60000 (69%)]\tLoss: 0.179860\n",
      "Train Epoch: 2 [42240/60000 (70%)]\tLoss: 0.241299\n",
      "Train Epoch: 2 [42880/60000 (71%)]\tLoss: 0.178297\n",
      "Train Epoch: 2 [43520/60000 (72%)]\tLoss: 0.259543\n",
      "Train Epoch: 2 [44160/60000 (74%)]\tLoss: 0.173866\n",
      "Train Epoch: 2 [44800/60000 (75%)]\tLoss: 0.309434\n",
      "Train Epoch: 2 [45440/60000 (76%)]\tLoss: 0.227130\n",
      "Train Epoch: 2 [46080/60000 (77%)]\tLoss: 0.165130\n",
      "Train Epoch: 2 [46720/60000 (78%)]\tLoss: 0.200882\n",
      "Train Epoch: 2 [47360/60000 (79%)]\tLoss: 0.188526\n",
      "Train Epoch: 2 [48000/60000 (80%)]\tLoss: 0.141206\n",
      "Train Epoch: 2 [48640/60000 (81%)]\tLoss: 0.238346\n",
      "Train Epoch: 2 [49280/60000 (82%)]\tLoss: 0.217185\n",
      "Train Epoch: 2 [49920/60000 (83%)]\tLoss: 0.283391\n",
      "Train Epoch: 2 [50560/60000 (84%)]\tLoss: 0.156309\n",
      "Train Epoch: 2 [51200/60000 (85%)]\tLoss: 0.173989\n",
      "Train Epoch: 2 [51840/60000 (86%)]\tLoss: 0.211873\n",
      "Train Epoch: 2 [52480/60000 (87%)]\tLoss: 0.184702\n",
      "Train Epoch: 2 [53120/60000 (88%)]\tLoss: 0.188132\n",
      "Train Epoch: 2 [53760/60000 (90%)]\tLoss: 0.302662\n",
      "Train Epoch: 2 [54400/60000 (91%)]\tLoss: 0.155798\n",
      "Train Epoch: 2 [55040/60000 (92%)]\tLoss: 0.238332\n",
      "Train Epoch: 2 [55680/60000 (93%)]\tLoss: 0.199989\n",
      "Train Epoch: 2 [56320/60000 (94%)]\tLoss: 0.228910\n",
      "Train Epoch: 2 [56960/60000 (95%)]\tLoss: 0.174833\n",
      "Train Epoch: 2 [57600/60000 (96%)]\tLoss: 0.283807\n",
      "Train Epoch: 2 [58240/60000 (97%)]\tLoss: 0.392636\n",
      "Train Epoch: 2 [58880/60000 (98%)]\tLoss: 0.253107\n",
      "Train Epoch: 2 [59520/60000 (99%)]\tLoss: 0.142730\n",
      "\n",
      "Test set: Avg. loss: 0.1177, Accuracy: 9642/10000 (96%)\n",
      "\n",
      "Train Epoch: 3 [0/60000 (0%)]\tLoss: 0.249620\n",
      "Train Epoch: 3 [640/60000 (1%)]\tLoss: 0.376181\n",
      "Train Epoch: 3 [1280/60000 (2%)]\tLoss: 0.173557\n",
      "Train Epoch: 3 [1920/60000 (3%)]\tLoss: 0.296516\n",
      "Train Epoch: 3 [2560/60000 (4%)]\tLoss: 0.344457\n",
      "Train Epoch: 3 [3200/60000 (5%)]\tLoss: 0.123912\n",
      "Train Epoch: 3 [3840/60000 (6%)]\tLoss: 0.179094\n",
      "Train Epoch: 3 [4480/60000 (7%)]\tLoss: 0.417895\n",
      "Train Epoch: 3 [5120/60000 (9%)]\tLoss: 0.248779\n",
      "Train Epoch: 3 [5760/60000 (10%)]\tLoss: 0.253100\n",
      "Train Epoch: 3 [6400/60000 (11%)]\tLoss: 0.263218\n",
      "Train Epoch: 3 [7040/60000 (12%)]\tLoss: 0.318442\n",
      "Train Epoch: 3 [7680/60000 (13%)]\tLoss: 0.324296\n",
      "Train Epoch: 3 [8320/60000 (14%)]\tLoss: 0.317888\n",
      "Train Epoch: 3 [8960/60000 (15%)]\tLoss: 0.251041\n",
      "Train Epoch: 3 [9600/60000 (16%)]\tLoss: 0.170788\n",
      "Train Epoch: 3 [10240/60000 (17%)]\tLoss: 0.144808\n",
      "Train Epoch: 3 [10880/60000 (18%)]\tLoss: 0.216899\n",
      "Train Epoch: 3 [11520/60000 (19%)]\tLoss: 0.172670\n",
      "Train Epoch: 3 [12160/60000 (20%)]\tLoss: 0.202383\n",
      "Train Epoch: 3 [12800/60000 (21%)]\tLoss: 0.180830\n",
      "Train Epoch: 3 [13440/60000 (22%)]\tLoss: 0.233515\n",
      "Train Epoch: 3 [14080/60000 (23%)]\tLoss: 0.221709\n",
      "Train Epoch: 3 [14720/60000 (25%)]\tLoss: 0.186747\n",
      "Train Epoch: 3 [15360/60000 (26%)]\tLoss: 0.214782\n",
      "Train Epoch: 3 [16000/60000 (27%)]\tLoss: 0.177139\n",
      "Train Epoch: 3 [16640/60000 (28%)]\tLoss: 0.168462\n",
      "Train Epoch: 3 [17280/60000 (29%)]\tLoss: 0.136675\n",
      "Train Epoch: 3 [17920/60000 (30%)]\tLoss: 0.249440\n",
      "Train Epoch: 3 [18560/60000 (31%)]\tLoss: 0.416230\n",
      "Train Epoch: 3 [19200/60000 (32%)]\tLoss: 0.173112\n",
      "Train Epoch: 3 [19840/60000 (33%)]\tLoss: 0.182306\n",
      "Train Epoch: 3 [20480/60000 (34%)]\tLoss: 0.145720\n",
      "Train Epoch: 3 [21120/60000 (35%)]\tLoss: 0.250068\n",
      "Train Epoch: 3 [21760/60000 (36%)]\tLoss: 0.185702\n",
      "Train Epoch: 3 [22400/60000 (37%)]\tLoss: 0.181848\n",
      "Train Epoch: 3 [23040/60000 (38%)]\tLoss: 0.251325\n",
      "Train Epoch: 3 [23680/60000 (39%)]\tLoss: 0.252211\n",
      "Train Epoch: 3 [24320/60000 (41%)]\tLoss: 0.365382\n",
      "Train Epoch: 3 [24960/60000 (42%)]\tLoss: 0.289274\n",
      "Train Epoch: 3 [25600/60000 (43%)]\tLoss: 0.258265\n",
      "Train Epoch: 3 [26240/60000 (44%)]\tLoss: 0.279507\n",
      "Train Epoch: 3 [26880/60000 (45%)]\tLoss: 0.271534\n",
      "Train Epoch: 3 [27520/60000 (46%)]\tLoss: 0.182283\n",
      "Train Epoch: 3 [28160/60000 (47%)]\tLoss: 0.223342\n",
      "Train Epoch: 3 [28800/60000 (48%)]\tLoss: 0.220985\n",
      "Train Epoch: 3 [29440/60000 (49%)]\tLoss: 0.291978\n",
      "Train Epoch: 3 [30080/60000 (50%)]\tLoss: 0.256386\n",
      "Train Epoch: 3 [30720/60000 (51%)]\tLoss: 0.434362\n",
      "Train Epoch: 3 [31360/60000 (52%)]\tLoss: 0.248657\n",
      "Train Epoch: 3 [32000/60000 (53%)]\tLoss: 0.385987\n",
      "Train Epoch: 3 [32640/60000 (54%)]\tLoss: 0.152229\n",
      "Train Epoch: 3 [33280/60000 (55%)]\tLoss: 0.302215\n",
      "Train Epoch: 3 [33920/60000 (57%)]\tLoss: 0.187139\n",
      "Train Epoch: 3 [34560/60000 (58%)]\tLoss: 0.148906\n",
      "Train Epoch: 3 [35200/60000 (59%)]\tLoss: 0.437560\n",
      "Train Epoch: 3 [35840/60000 (60%)]\tLoss: 0.077553\n",
      "Train Epoch: 3 [36480/60000 (61%)]\tLoss: 0.252538\n",
      "Train Epoch: 3 [37120/60000 (62%)]\tLoss: 0.238629\n",
      "Train Epoch: 3 [37760/60000 (63%)]\tLoss: 0.383619\n",
      "Train Epoch: 3 [38400/60000 (64%)]\tLoss: 0.212665\n",
      "Train Epoch: 3 [39040/60000 (65%)]\tLoss: 0.118489\n",
      "Train Epoch: 3 [39680/60000 (66%)]\tLoss: 0.111264\n",
      "Train Epoch: 3 [40320/60000 (67%)]\tLoss: 0.277191\n",
      "Train Epoch: 3 [40960/60000 (68%)]\tLoss: 0.202872\n",
      "Train Epoch: 3 [41600/60000 (69%)]\tLoss: 0.158086\n",
      "Train Epoch: 3 [42240/60000 (70%)]\tLoss: 0.190052\n",
      "Train Epoch: 3 [42880/60000 (71%)]\tLoss: 0.231610\n",
      "Train Epoch: 3 [43520/60000 (72%)]\tLoss: 0.258476\n",
      "Train Epoch: 3 [44160/60000 (74%)]\tLoss: 0.201093\n",
      "Train Epoch: 3 [44800/60000 (75%)]\tLoss: 0.109346\n",
      "Train Epoch: 3 [45440/60000 (76%)]\tLoss: 0.092904\n",
      "Train Epoch: 3 [46080/60000 (77%)]\tLoss: 0.252384\n",
      "Train Epoch: 3 [46720/60000 (78%)]\tLoss: 0.354974\n",
      "Train Epoch: 3 [47360/60000 (79%)]\tLoss: 0.262529\n",
      "Train Epoch: 3 [48000/60000 (80%)]\tLoss: 0.139185\n",
      "Train Epoch: 3 [48640/60000 (81%)]\tLoss: 0.211391\n",
      "Train Epoch: 3 [49280/60000 (82%)]\tLoss: 0.159314\n",
      "Train Epoch: 3 [49920/60000 (83%)]\tLoss: 0.214578\n",
      "Train Epoch: 3 [50560/60000 (84%)]\tLoss: 0.158964\n",
      "Train Epoch: 3 [51200/60000 (85%)]\tLoss: 0.128962\n",
      "Train Epoch: 3 [51840/60000 (86%)]\tLoss: 0.146382\n",
      "Train Epoch: 3 [52480/60000 (87%)]\tLoss: 0.207686\n",
      "Train Epoch: 3 [53120/60000 (88%)]\tLoss: 0.239478\n",
      "Train Epoch: 3 [53760/60000 (90%)]\tLoss: 0.128972\n",
      "Train Epoch: 3 [54400/60000 (91%)]\tLoss: 0.134207\n",
      "Train Epoch: 3 [55040/60000 (92%)]\tLoss: 0.410097\n",
      "Train Epoch: 3 [55680/60000 (93%)]\tLoss: 0.200744\n",
      "Train Epoch: 3 [56320/60000 (94%)]\tLoss: 0.134464\n",
      "Train Epoch: 3 [56960/60000 (95%)]\tLoss: 0.127514\n",
      "Train Epoch: 3 [57600/60000 (96%)]\tLoss: 0.235403\n",
      "Train Epoch: 3 [58240/60000 (97%)]\tLoss: 0.241771\n",
      "Train Epoch: 3 [58880/60000 (98%)]\tLoss: 0.461159\n",
      "Train Epoch: 3 [59520/60000 (99%)]\tLoss: 0.099182\n",
      "\n",
      "Test set: Avg. loss: 0.0864, Accuracy: 9743/10000 (97%)\n",
      "\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "Text(0.5, 1.0, 'add fc')"
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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5Il1qwghhMQRGOasjBs3Th555BFZvXp12rITTzzRbx4fJNaecMIJIY0yIunQuYkEEyfKZ6VvlJJdW8q195UROe88eIRmOSGEEKKUKVMm7Va0aFHj1ujzX375RU466ST58ssvpWHDhpI/f36ZM2eOrF27Vrp06SKlS5c24qdx48byzTffBA1L5cqVS9544w3p1q2bGVFWvXp1mTJlSrba/sknn0itWrVMu/B5w4cP93v95ZdfNp9ToEAB09bLLrss7bWPP/5Y6tSpIwULFjRD99u2bSv79++XaEHnJrtAwFx2mdT2nWae/ih15IjklXx//mmWy8cfi1xySaxbSQghSY/PJ3LgQGw+GyPSIzVw64EHHpBnn31WqlSpIsWLF5dNmzbJRRddJE888YQRFmPHjpVOnToZxweT3QXi0UcflWHDhskzzzwjL774olx99dXy+++/y8knnxx2m5YsWSKXX365CZv16NFD5s2bJ3fccYcRKtddd50sXrxYevfuLe+++660aNFCduzYIbNnz05zq6688krTFoitvXv3mtfgTEUNX4qxe/duHE1zn23++8/nK18ep8d3TMRXXP7BQ98SqX98WS7f3FJdfdu2/Of75x+f7777fL733ovEXhBCSGpz8OBB388//2zulX37zFdvTG747HB5++23fUWLFk17PnPmTNM/TZ48OdP31qpVy/fiiy+mPa9YsaLvueeeS3suIr6HH37YOjb7zLIvv/wy4DZbtWrl69Onj+drV111le+CCy7wW3bvvff6atasaR5/8sknviJFivj27NmT4b1Lliwxn71hw4Ysndes9N8MS2UHqNI//jAPIdgbyFLzeKk0MPfvSE9puXWSVK7sk1q1RIYNE7nmGpHHH3f+HQghhBA3jRo18nu+b98+ueeee+TMM8+UYsWKmdDUqlWrZOPGjUG3c9ZZZ6U9Lly4sBQpUkS2bt2apTbh81q2bOm3DM/XrFlj8oIuuOACqVixonGbrr32Wnn//fflwHEbrW7dunL++eebsFT37t3l9ddfl507d0o0objJDlZiGGgoS/zEzWi5zdzvO3iCbNkiUrq0s97AgSJvvpnTjSWEkOQGoaF9+2Jzi+REyRAiNhA2kyZNkieffNKEc5YvX26EwpEjR4JuJ6+rfAHycFC/KRogV2jp0qXy4YcfStmyZU2iNEQNSmTkyZNH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snr1ar91WrdubWZxtm+33Xab3zqo/YUCpoUKFTLbuffee+W///7zW2fWrFnSoEEDk21frVo1GTNmTMyO3+DBgzPs0xlnnJH2+qFDh+TOO++UU045RU488US59NJL5e+//07ofVbwWe59xw37m2zn+7vvvpNOnTqZmUyxH6g/Z4NxFKhnV7ZsWSlYsKC0bdtW1qxZ47fOjh075OqrrzYTlxUrVkxuvPFG2bdvn986K1askHPOOcfsB2ZxHTZsWIa2TJgwwVxjWKdOnTryxRdfhN2WSOz3v//+K/fff79pQ+HChc06KEyMGdszu06eeuqpuN7vzPYdXHfddRn2q0OHDkl9zoHX/zxuzzzzjCT6OQ8KRkuR7PHRRx/58uXL53vrrbd8P/30k+/mm2/2FStWzPf333/74pX27dv73n77bd/KlSt9y5cv91100UW+0047zbdv3760dVq1amX2ZfPmzWm33bt3p73+33//+WrXru1r27atb9myZb4vvvjCV6JECd+DDz6Yts66det8hQoV8vXv39/3888/+1588UVfnjx5fF999VVMjt+gQYN8tWrV8tunbdu2pb1+2223+SpUqOCbPn26b/Hixb5mzZr5WrRokdD7rGzdutVvv6dNm4aRkr6ZM2cm3flG2/7v//7PN3HiRLOPkyZN8nv9qaee8hUtWtQ3efJk3w8//ODr3Lmzr3Llyr6DBw+mrdOhQwdf3bp1fQsWLPDNnj3bV61aNd+VV16Z9jqOTenSpX1XX321+T/68MMPfQULFvS9+uqraevMnTvX7P+wYcPM8Xj44Yd9efPm9f34449htSUS+71r1y5z7saNG+f75ZdffPPnz/c1adLE17BhQ79tVKxY0ffYY4/5XQf290I87ndm+w569eplzqm9Xzt27PBbJ9nOObD3Fzf83+XKlcu3du1aX6Kf82BQ3EQAfEHceeedac+PHj3qO/XUU31Dhw71JQro+PCP8e2336YtQ2fXp0+foP9UuXPn9m3ZsiVt2SuvvOIrUqSI7/Dhw+b5fffdZ8SETY8ePYy4isXxg7jBl5cX+PLHP+OECRPSlq1atcocF3QEibrPgcC5rVq1qu/YsWNJe76B+wsf+1umTBnfM88843fu8+fPb760Ab6c8b7vv/8+bZ0vv/zSdAp//vmnef7yyy/7ihcvnrbv4P777/fVqFEj7fnl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iHz11VcyZswYU0R18+bNUrt27Qzr4HUUGo0U99xzT4ZaNJnx/fff+1UvJ4QQL07wXEoISTiOHj1qXBcUvAsXLR7aokWLbLcDldVRIDMzTjzxRHMLh5IlS2ajZYSQVIHODUnp0FDv3r3lvvvuM+EYVKyFpa9s2LAhQ4gGVYOxbNasWeY57vH866+/lvr160vBggWlTZs2pnL2l19+KWeeeaapmn3VVVfJgQMH/D7/v//+M5XZixYtKiVKlJCBAwea8JBy+PBh426UK1dOChcubCoT6+faTsqUKVNMVe78+fObCuZefPvtt9KkSROzDkTMAw88YD4fXHfddXL33Xeb92JfEPpxg8+9/vrrZffu3WYd3PRYYf0hQ4ZIz549zb6qs3L//ffL6aefLoUKFZIqVaqY/bOrCrvDJ2hH165d5dlnnzVtRMXqO++80+897rAU2vHGG29It27dzOdUr17dHA8bPMfyAgUKyHnnnSfvvPOOeR/OZSDw2k033WTEFPYJ5/SHH34wr23bts1cK08++WTa+vPmzTOCTp0oiMUuXbpI6dKljYBr3LixqcJtg315/PHHzXHDOhUrVjRtxfbxXiw766yzZPHixRnO+eTJk9P2qX379rJp0yYJBo4RrkWsf8YZZ8jLL7/sJ0ZxHeKY43W0Y+jQoQG3hWsB1xKuSbSlZcuW8vvvv6e9/umnn0qDBg3MtnDeH3300bRrLbNja18X7777rjlG+P+44oorZO/evUH3kRA/olKxipAEoFWrVqY43uDBg32//vqr75133vHlypXLN3XqVPO6FhpEhV1l586dfoUGtWhds2bNTBXhpUuXmqKT2DYK9eH5d9995zvllFP8Cs3hdRTn69Onj++XX34xlXhRqPO1115LW+emm27ytWjRwrwfxT2feeYZU2wObQUoSIkigFgHFXmxnf3792fYzz/++MNsGwVBUa130qRJpuglqvYCFNNDRXBUi0aRUK2QboOq0SNHjjTHSytJa0FBFCHEclQDRju1EOmQIUNMu3Acp0yZYorlPf3002nbxOfXrVs37TkK/WE7qMyOdv7vf//LcEzwWahgrODYo90ffPCBb82aNb7evXub44oCiFqlHMcIFaFxfD788ENT9A/vw7kMBKrFd+rUyff999+b440CoTiHul0UBMR28fqePXtMgdB+/fqlvR8VlkePHm0q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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "n_epochs = 3\n",
    "batch_size_train = 64\n",
    "batch_size_test = 1000\n",
    "learning_rate = 0.01\n",
    "momentum = 0.5\n",
    "log_interval = 10\n",
    "random_seed = 1\n",
    "torch.backends.cudnn.enabled = False\n",
    "torch.manual_seed(random_seed)\n",
    "\n",
    "train_loader = torch.utils.data.DataLoader(\n",
    "  torchvision.datasets.MNIST('/files/', train=True, download=True,\n",
    "                             transform=torchvision.transforms.Compose([\n",
    "                               torchvision.transforms.ToTensor(),\n",
    "                               torchvision.transforms.Normalize(\n",
    "                                 (0.1307,), (0.3081,))\n",
    "                             ])),\n",
    "  batch_size=batch_size_train, shuffle=True)\n",
    "test_loader = torch.utils.data.DataLoader(\n",
    "  torchvision.datasets.MNIST('/files/', train=False, download=True,\n",
    "                             transform=torchvision.transforms.Compose([\n",
    "                               torchvision.transforms.ToTensor(),\n",
    "                               torchvision.transforms.Normalize(\n",
    "                                 (0.1307,), (0.3081,))\n",
    "                             ])),\n",
    "  batch_size=batch_size_test, shuffle=True)\n",
    "\n",
    "examples = enumerate(test_loader)\n",
    "batch_idx, (example_data, example_targets) = next(examples)\n",
    "\n",
    "class Net(nn.Module):\n",
    "    def __init__(self):\n",
    "        super(Net, self).__init__()\n",
    "        self.conv1 = nn.Conv2d(1, 10, kernel_size=5)\n",
    "        self.conv2 = nn.Conv2d(10, 20, kernel_size=5)\n",
    "        self.conv2_drop = nn.Dropout2d()\n",
    "        self.fc1 = nn.Linear(320, 50)\n",
    "        self.fc2 = nn.Linear(50, 20) #新增\n",
    "        self.fc3 = nn.Linear(20, 10)\n",
    "\n",
    "    def forward(self, x):\n",
    "        x = F.relu(F.max_pool2d(self.conv1(x), 2))\n",
    "        x = F.relu(F.max_pool2d(self.conv2(x), 2))\n",
    "        x = x.view(-1, 320)\n",
    "        x = F.relu(self.fc1(x))\n",
    "        x = F.dropout(x, training=self.training)\n",
    "        x = F.relu(self.fc2(x))\n",
    "        x = self.fc3(x)\n",
    "        return F.log_softmax(x, dim=1)\n",
    "    \n",
    "network = Net()\n",
    "optimizer = optim.SGD(network.parameters(), lr=learning_rate,\n",
    "                      momentum=momentum)\n",
    "\n",
    "train_losses = []\n",
    "train_counter = []\n",
    "test_losses = []\n",
    "test_counter = [i*len(train_loader.dataset) for i in range(n_epochs + 1)]\n",
    "\n",
    "def train(epoch):\n",
    "  network.train()\n",
    "  for batch_idx, (data, target) in enumerate(train_loader):\n",
    "    optimizer.zero_grad()\n",
    "    output = network(data)\n",
    "    loss = F.nll_loss(output, target)\n",
    "    loss.backward()\n",
    "    optimizer.step()\n",
    "    if batch_idx % log_interval == 0:\n",
    "      print('Train Epoch: {} [{}/{} ({:.0f}%)]\\tLoss: {:.6f}'.format(\n",
    "        epoch, batch_idx * len(data), len(train_loader.dataset),\n",
    "        100. * batch_idx / len(train_loader), loss.item()))\n",
    "      train_losses.append(loss.item())\n",
    "      train_counter.append(\n",
    "        (batch_idx*64) + ((epoch-1)*len(train_loader.dataset)))\n",
    "      torch.save(network.state_dict(), '/homework/model.pth')\n",
    "      torch.save(optimizer.state_dict(), '/homework/optimizer.pth')\n",
    "\n",
    "def test():\n",
    "  network.eval()\n",
    "  test_loss = 0\n",
    "  correct = 0\n",
    "  with torch.no_grad():\n",
    "    for data, target in test_loader:\n",
    "      output = network(data)\n",
    "      test_loss += F.nll_loss(output, target, size_average=False).item()\n",
    "      pred = output.data.max(1, keepdim=True)[1]\n",
    "      correct += pred.eq(target.data.view_as(pred)).sum()\n",
    "  test_loss /= len(test_loader.dataset)\n",
    "  test_losses.append(test_loss)\n",
    "  print('\\nTest set: Avg. loss: {:.4f}, Accuracy: {}/{} ({:.0f}%)\\n'.format(\n",
    "    test_loss, correct, len(test_loader.dataset),\n",
    "    100. * correct / len(test_loader.dataset)))\n",
    "  \n",
    "test()\n",
    "for epoch in range(1, n_epochs + 1):\n",
    "  train(epoch)\n",
    "  test()\n",
    "\n",
    "fig = plt.figure()\n",
    "plt.plot(train_counter, train_losses, color='blue')\n",
    "plt.scatter(test_counter, test_losses, color='red')\n",
    "plt.legend(['Train Loss', 'Test Loss'], loc='upper right')\n",
    "plt.xlabel('number of training examples seen')\n",
    "plt.ylabel('negative log likelihood loss')\n",
    "plt.title(\"add fc\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 增加Epoch"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "d:\\anaconda\\envs\\pytorch\\Lib\\site-packages\\torch\\nn\\_reduction.py:51: UserWarning: size_average and reduce args will be deprecated, please use reduction='sum' instead.\n",
      "  warnings.warn(warning.format(ret))\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "Test set: Avg. loss: 2.3096, Accuracy: 924/10000 (9%)\n",
      "\n",
      "Train Epoch: 1 [0/60000 (0%)]\tLoss: 2.306752\n",
      "Train Epoch: 1 [640/60000 (1%)]\tLoss: 2.274166\n",
      "Train Epoch: 1 [1280/60000 (2%)]\tLoss: 2.276429\n",
      "Train Epoch: 1 [1920/60000 (3%)]\tLoss: 2.252161\n",
      "Train Epoch: 1 [2560/60000 (4%)]\tLoss: 2.198898\n",
      "Train Epoch: 1 [3200/60000 (5%)]\tLoss: 2.156746\n",
      "Train Epoch: 1 [3840/60000 (6%)]\tLoss: 2.059068\n",
      "Train Epoch: 1 [4480/60000 (7%)]\tLoss: 1.980562\n",
      "Train Epoch: 1 [5120/60000 (9%)]\tLoss: 1.829180\n",
      "Train Epoch: 1 [5760/60000 (10%)]\tLoss: 1.681554\n",
      "Train Epoch: 1 [6400/60000 (11%)]\tLoss: 1.511159\n",
      "Train Epoch: 1 [7040/60000 (12%)]\tLoss: 1.384667\n",
      "Train Epoch: 1 [7680/60000 (13%)]\tLoss: 1.188695\n",
      "Train Epoch: 1 [8320/60000 (14%)]\tLoss: 1.141055\n",
      "Train Epoch: 1 [8960/60000 (15%)]\tLoss: 1.120467\n",
      "Train Epoch: 1 [9600/60000 (16%)]\tLoss: 1.156619\n",
      "Train Epoch: 1 [10240/60000 (17%)]\tLoss: 0.982744\n",
      "Train Epoch: 1 [10880/60000 (18%)]\tLoss: 1.118855\n",
      "Train Epoch: 1 [11520/60000 (19%)]\tLoss: 1.144806\n",
      "Train Epoch: 1 [12160/60000 (20%)]\tLoss: 0.658095\n",
      "Train Epoch: 1 [12800/60000 (21%)]\tLoss: 0.976607\n",
      "Train Epoch: 1 [13440/60000 (22%)]\tLoss: 0.624680\n",
      "Train Epoch: 1 [14080/60000 (23%)]\tLoss: 1.020103\n",
      "Train Epoch: 1 [14720/60000 (25%)]\tLoss: 0.744651\n",
      "Train Epoch: 1 [15360/60000 (26%)]\tLoss: 0.709437\n",
      "Train Epoch: 1 [16000/60000 (27%)]\tLoss: 0.622685\n",
      "Train Epoch: 1 [16640/60000 (28%)]\tLoss: 0.672284\n",
      "Train Epoch: 1 [17280/60000 (29%)]\tLoss: 0.546219\n",
      "Train Epoch: 1 [17920/60000 (30%)]\tLoss: 0.775687\n",
      "Train Epoch: 1 [18560/60000 (31%)]\tLoss: 0.722001\n",
      "Train Epoch: 1 [19200/60000 (32%)]\tLoss: 0.786425\n",
      "Train Epoch: 1 [19840/60000 (33%)]\tLoss: 0.641883\n",
      "Train Epoch: 1 [20480/60000 (34%)]\tLoss: 0.425950\n",
      "Train Epoch: 1 [21120/60000 (35%)]\tLoss: 0.557607\n",
      "Train Epoch: 1 [21760/60000 (36%)]\tLoss: 0.505481\n",
      "Train Epoch: 1 [22400/60000 (37%)]\tLoss: 0.636357\n",
      "Train Epoch: 1 [23040/60000 (38%)]\tLoss: 0.531122\n",
      "Train Epoch: 1 [23680/60000 (39%)]\tLoss: 0.420032\n",
      "Train Epoch: 1 [24320/60000 (41%)]\tLoss: 0.591242\n",
      "Train Epoch: 1 [24960/60000 (42%)]\tLoss: 0.711157\n",
      "Train Epoch: 1 [25600/60000 (43%)]\tLoss: 0.641421\n",
      "Train Epoch: 1 [26240/60000 (44%)]\tLoss: 0.496257\n",
      "Train Epoch: 1 [26880/60000 (45%)]\tLoss: 0.449749\n",
      "Train Epoch: 1 [27520/60000 (46%)]\tLoss: 0.396027\n",
      "Train Epoch: 1 [28160/60000 (47%)]\tLoss: 0.513820\n",
      "Train Epoch: 1 [28800/60000 (48%)]\tLoss: 0.333165\n",
      "Train Epoch: 1 [29440/60000 (49%)]\tLoss: 0.592891\n",
      "Train Epoch: 1 [30080/60000 (50%)]\tLoss: 0.467976\n",
      "Train Epoch: 1 [30720/60000 (51%)]\tLoss: 0.545823\n",
      "Train Epoch: 1 [31360/60000 (52%)]\tLoss: 0.429140\n",
      "Train Epoch: 1 [32000/60000 (53%)]\tLoss: 0.442416\n",
      "Train Epoch: 1 [32640/60000 (54%)]\tLoss: 0.351727\n",
      "Train Epoch: 1 [33280/60000 (55%)]\tLoss: 0.408701\n",
      "Train Epoch: 1 [33920/60000 (57%)]\tLoss: 0.548976\n",
      "Train Epoch: 1 [34560/60000 (58%)]\tLoss: 0.559359\n",
      "Train Epoch: 1 [35200/60000 (59%)]\tLoss: 0.624446\n",
      "Train Epoch: 1 [35840/60000 (60%)]\tLoss: 0.302861\n",
      "Train Epoch: 1 [36480/60000 (61%)]\tLoss: 0.398703\n",
      "Train Epoch: 1 [37120/60000 (62%)]\tLoss: 0.584780\n",
      "Train Epoch: 1 [37760/60000 (63%)]\tLoss: 0.352159\n",
      "Train Epoch: 1 [38400/60000 (64%)]\tLoss: 0.383155\n",
      "Train Epoch: 1 [39040/60000 (65%)]\tLoss: 0.444071\n",
      "Train Epoch: 1 [39680/60000 (66%)]\tLoss: 0.362817\n",
      "Train Epoch: 1 [40320/60000 (67%)]\tLoss: 0.244784\n",
      "Train Epoch: 1 [40960/60000 (68%)]\tLoss: 0.254553\n",
      "Train Epoch: 1 [41600/60000 (69%)]\tLoss: 0.226628\n",
      "Train Epoch: 1 [42240/60000 (70%)]\tLoss: 0.246281\n",
      "Train Epoch: 1 [42880/60000 (71%)]\tLoss: 0.225730\n",
      "Train Epoch: 1 [43520/60000 (72%)]\tLoss: 0.580223\n",
      "Train Epoch: 1 [44160/60000 (74%)]\tLoss: 0.287248\n",
      "Train Epoch: 1 [44800/60000 (75%)]\tLoss: 0.303935\n",
      "Train Epoch: 1 [45440/60000 (76%)]\tLoss: 0.344434\n",
      "Train Epoch: 1 [46080/60000 (77%)]\tLoss: 0.404901\n",
      "Train Epoch: 1 [46720/60000 (78%)]\tLoss: 0.179839\n",
      "Train Epoch: 1 [47360/60000 (79%)]\tLoss: 0.464448\n",
      "Train Epoch: 1 [48000/60000 (80%)]\tLoss: 0.376022\n",
      "Train Epoch: 1 [48640/60000 (81%)]\tLoss: 0.213828\n",
      "Train Epoch: 1 [49280/60000 (82%)]\tLoss: 0.227234\n",
      "Train Epoch: 1 [49920/60000 (83%)]\tLoss: 0.464568\n",
      "Train Epoch: 1 [50560/60000 (84%)]\tLoss: 0.343703\n",
      "Train Epoch: 1 [51200/60000 (85%)]\tLoss: 0.536324\n",
      "Train Epoch: 1 [51840/60000 (86%)]\tLoss: 0.316195\n",
      "Train Epoch: 1 [52480/60000 (87%)]\tLoss: 0.386255\n",
      "Train Epoch: 1 [53120/60000 (88%)]\tLoss: 0.446157\n",
      "Train Epoch: 1 [53760/60000 (90%)]\tLoss: 0.279534\n",
      "Train Epoch: 1 [54400/60000 (91%)]\tLoss: 0.327406\n",
      "Train Epoch: 1 [55040/60000 (92%)]\tLoss: 0.434117\n",
      "Train Epoch: 1 [55680/60000 (93%)]\tLoss: 0.237589\n",
      "Train Epoch: 1 [56320/60000 (94%)]\tLoss: 0.349979\n",
      "Train Epoch: 1 [56960/60000 (95%)]\tLoss: 0.361610\n",
      "Train Epoch: 1 [57600/60000 (96%)]\tLoss: 0.303774\n",
      "Train Epoch: 1 [58240/60000 (97%)]\tLoss: 0.261291\n",
      "Train Epoch: 1 [58880/60000 (98%)]\tLoss: 0.433848\n",
      "Train Epoch: 1 [59520/60000 (99%)]\tLoss: 0.336619\n",
      "\n",
      "Test set: Avg. loss: 0.1514, Accuracy: 9551/10000 (96%)\n",
      "\n",
      "Train Epoch: 2 [0/60000 (0%)]\tLoss: 0.297858\n",
      "Train Epoch: 2 [640/60000 (1%)]\tLoss: 0.347769\n",
      "Train Epoch: 2 [1280/60000 (2%)]\tLoss: 0.309157\n",
      "Train Epoch: 2 [1920/60000 (3%)]\tLoss: 0.389076\n",
      "Train Epoch: 2 [2560/60000 (4%)]\tLoss: 0.326656\n",
      "Train Epoch: 2 [3200/60000 (5%)]\tLoss: 0.211769\n",
      "Train Epoch: 2 [3840/60000 (6%)]\tLoss: 0.463712\n",
      "Train Epoch: 2 [4480/60000 (7%)]\tLoss: 0.204416\n",
      "Train Epoch: 2 [5120/60000 (9%)]\tLoss: 0.290731\n",
      "Train Epoch: 2 [5760/60000 (10%)]\tLoss: 0.405961\n",
      "Train Epoch: 2 [6400/60000 (11%)]\tLoss: 0.255936\n",
      "Train Epoch: 2 [7040/60000 (12%)]\tLoss: 0.187101\n",
      "Train Epoch: 2 [7680/60000 (13%)]\tLoss: 0.182345\n",
      "Train Epoch: 2 [8320/60000 (14%)]\tLoss: 0.436177\n",
      "Train Epoch: 2 [8960/60000 (15%)]\tLoss: 0.213264\n",
      "Train Epoch: 2 [9600/60000 (16%)]\tLoss: 0.275492\n",
      "Train Epoch: 2 [10240/60000 (17%)]\tLoss: 0.385288\n",
      "Train Epoch: 2 [10880/60000 (18%)]\tLoss: 0.282314\n",
      "Train Epoch: 2 [11520/60000 (19%)]\tLoss: 0.385594\n",
      "Train Epoch: 2 [12160/60000 (20%)]\tLoss: 0.260125\n",
      "Train Epoch: 2 [12800/60000 (21%)]\tLoss: 0.260357\n",
      "Train Epoch: 2 [13440/60000 (22%)]\tLoss: 0.301771\n",
      "Train Epoch: 2 [14080/60000 (23%)]\tLoss: 0.179341\n",
      "Train Epoch: 2 [14720/60000 (25%)]\tLoss: 0.264244\n",
      "Train Epoch: 2 [15360/60000 (26%)]\tLoss: 0.443740\n",
      "Train Epoch: 2 [16000/60000 (27%)]\tLoss: 0.241058\n",
      "Train Epoch: 2 [16640/60000 (28%)]\tLoss: 0.233798\n",
      "Train Epoch: 2 [17280/60000 (29%)]\tLoss: 0.291922\n",
      "Train Epoch: 2 [17920/60000 (30%)]\tLoss: 0.209254\n",
      "Train Epoch: 2 [18560/60000 (31%)]\tLoss: 0.410475\n",
      "Train Epoch: 2 [19200/60000 (32%)]\tLoss: 0.284500\n",
      "Train Epoch: 2 [19840/60000 (33%)]\tLoss: 0.201589\n",
      "Train Epoch: 2 [20480/60000 (34%)]\tLoss: 0.429722\n",
      "Train Epoch: 2 [21120/60000 (35%)]\tLoss: 0.288609\n",
      "Train Epoch: 2 [21760/60000 (36%)]\tLoss: 0.296265\n",
      "Train Epoch: 2 [22400/60000 (37%)]\tLoss: 0.291219\n",
      "Train Epoch: 2 [23040/60000 (38%)]\tLoss: 0.253303\n",
      "Train Epoch: 2 [23680/60000 (39%)]\tLoss: 0.335447\n",
      "Train Epoch: 2 [24320/60000 (41%)]\tLoss: 0.284760\n",
      "Train Epoch: 2 [24960/60000 (42%)]\tLoss: 0.457701\n",
      "Train Epoch: 2 [25600/60000 (43%)]\tLoss: 0.213688\n",
      "Train Epoch: 2 [26240/60000 (44%)]\tLoss: 0.203593\n",
      "Train Epoch: 2 [26880/60000 (45%)]\tLoss: 0.231685\n",
      "Train Epoch: 2 [27520/60000 (46%)]\tLoss: 0.221332\n",
      "Train Epoch: 2 [28160/60000 (47%)]\tLoss: 0.522572\n",
      "Train Epoch: 2 [28800/60000 (48%)]\tLoss: 0.342830\n",
      "Train Epoch: 2 [29440/60000 (49%)]\tLoss: 0.354381\n",
      "Train Epoch: 2 [30080/60000 (50%)]\tLoss: 0.454420\n",
      "Train Epoch: 2 [30720/60000 (51%)]\tLoss: 0.176499\n",
      "Train Epoch: 2 [31360/60000 (52%)]\tLoss: 0.178587\n",
      "Train Epoch: 2 [32000/60000 (53%)]\tLoss: 0.227927\n",
      "Train Epoch: 2 [32640/60000 (54%)]\tLoss: 0.184551\n",
      "Train Epoch: 2 [33280/60000 (55%)]\tLoss: 0.330016\n",
      "Train Epoch: 2 [33920/60000 (57%)]\tLoss: 0.228961\n",
      "Train Epoch: 2 [34560/60000 (58%)]\tLoss: 0.278949\n",
      "Train Epoch: 2 [35200/60000 (59%)]\tLoss: 0.331648\n",
      "Train Epoch: 2 [35840/60000 (60%)]\tLoss: 0.177206\n",
      "Train Epoch: 2 [36480/60000 (61%)]\tLoss: 0.374048\n",
      "Train Epoch: 2 [37120/60000 (62%)]\tLoss: 0.331437\n",
      "Train Epoch: 2 [37760/60000 (63%)]\tLoss: 0.157505\n",
      "Train Epoch: 2 [38400/60000 (64%)]\tLoss: 0.183437\n",
      "Train Epoch: 2 [39040/60000 (65%)]\tLoss: 0.417770\n",
      "Train Epoch: 2 [39680/60000 (66%)]\tLoss: 0.364919\n",
      "Train Epoch: 2 [40320/60000 (67%)]\tLoss: 0.122803\n",
      "Train Epoch: 2 [40960/60000 (68%)]\tLoss: 0.125174\n",
      "Train Epoch: 2 [41600/60000 (69%)]\tLoss: 0.252484\n",
      "Train Epoch: 2 [42240/60000 (70%)]\tLoss: 0.225036\n",
      "Train Epoch: 2 [42880/60000 (71%)]\tLoss: 0.229469\n",
      "Train Epoch: 2 [43520/60000 (72%)]\tLoss: 0.248053\n",
      "Train Epoch: 2 [44160/60000 (74%)]\tLoss: 0.165230\n",
      "Train Epoch: 2 [44800/60000 (75%)]\tLoss: 0.162399\n",
      "Train Epoch: 2 [45440/60000 (76%)]\tLoss: 0.223352\n",
      "Train Epoch: 2 [46080/60000 (77%)]\tLoss: 0.280401\n",
      "Train Epoch: 2 [46720/60000 (78%)]\tLoss: 0.152992\n",
      "Train Epoch: 2 [47360/60000 (79%)]\tLoss: 0.299998\n",
      "Train Epoch: 2 [48000/60000 (80%)]\tLoss: 0.174597\n",
      "Train Epoch: 2 [48640/60000 (81%)]\tLoss: 0.161247\n",
      "Train Epoch: 2 [49280/60000 (82%)]\tLoss: 0.068339\n",
      "Train Epoch: 2 [49920/60000 (83%)]\tLoss: 0.203769\n",
      "Train Epoch: 2 [50560/60000 (84%)]\tLoss: 0.312547\n",
      "Train Epoch: 2 [51200/60000 (85%)]\tLoss: 0.082070\n",
      "Train Epoch: 2 [51840/60000 (86%)]\tLoss: 0.211616\n",
      "Train Epoch: 2 [52480/60000 (87%)]\tLoss: 0.472227\n",
      "Train Epoch: 2 [53120/60000 (88%)]\tLoss: 0.054150\n",
      "Train Epoch: 2 [53760/60000 (90%)]\tLoss: 0.087318\n",
      "Train Epoch: 2 [54400/60000 (91%)]\tLoss: 0.175152\n",
      "Train Epoch: 2 [55040/60000 (92%)]\tLoss: 0.280535\n",
      "Train Epoch: 2 [55680/60000 (93%)]\tLoss: 0.242980\n",
      "Train Epoch: 2 [56320/60000 (94%)]\tLoss: 0.273375\n",
      "Train Epoch: 2 [56960/60000 (95%)]\tLoss: 0.142996\n",
      "Train Epoch: 2 [57600/60000 (96%)]\tLoss: 0.152257\n",
      "Train Epoch: 2 [58240/60000 (97%)]\tLoss: 0.211292\n",
      "Train Epoch: 2 [58880/60000 (98%)]\tLoss: 0.288193\n",
      "Train Epoch: 2 [59520/60000 (99%)]\tLoss: 0.277580\n",
      "\n",
      "Test set: Avg. loss: 0.0907, Accuracy: 9725/10000 (97%)\n",
      "\n",
      "Train Epoch: 3 [0/60000 (0%)]\tLoss: 0.122892\n",
      "Train Epoch: 3 [640/60000 (1%)]\tLoss: 0.070673\n",
      "Train Epoch: 3 [1280/60000 (2%)]\tLoss: 0.282641\n",
      "Train Epoch: 3 [1920/60000 (3%)]\tLoss: 0.360844\n",
      "Train Epoch: 3 [2560/60000 (4%)]\tLoss: 0.171231\n",
      "Train Epoch: 3 [3200/60000 (5%)]\tLoss: 0.192343\n",
      "Train Epoch: 3 [3840/60000 (6%)]\tLoss: 0.205437\n",
      "Train Epoch: 3 [4480/60000 (7%)]\tLoss: 0.370689\n",
      "Train Epoch: 3 [5120/60000 (9%)]\tLoss: 0.317649\n",
      "Train Epoch: 3 [5760/60000 (10%)]\tLoss: 0.163953\n",
      "Train Epoch: 3 [6400/60000 (11%)]\tLoss: 0.109861\n",
      "Train Epoch: 3 [7040/60000 (12%)]\tLoss: 0.295435\n",
      "Train Epoch: 3 [7680/60000 (13%)]\tLoss: 0.338749\n",
      "Train Epoch: 3 [8320/60000 (14%)]\tLoss: 0.286116\n",
      "Train Epoch: 3 [8960/60000 (15%)]\tLoss: 0.205457\n",
      "Train Epoch: 3 [9600/60000 (16%)]\tLoss: 0.239938\n",
      "Train Epoch: 3 [10240/60000 (17%)]\tLoss: 0.150406\n",
      "Train Epoch: 3 [10880/60000 (18%)]\tLoss: 0.058447\n",
      "Train Epoch: 3 [11520/60000 (19%)]\tLoss: 0.210967\n",
      "Train Epoch: 3 [12160/60000 (20%)]\tLoss: 0.132288\n",
      "Train Epoch: 3 [12800/60000 (21%)]\tLoss: 0.202783\n",
      "Train Epoch: 3 [13440/60000 (22%)]\tLoss: 0.107074\n",
      "Train Epoch: 3 [14080/60000 (23%)]\tLoss: 0.232867\n",
      "Train Epoch: 3 [14720/60000 (25%)]\tLoss: 0.185353\n",
      "Train Epoch: 3 [15360/60000 (26%)]\tLoss: 0.372606\n",
      "Train Epoch: 3 [16000/60000 (27%)]\tLoss: 0.180155\n",
      "Train Epoch: 3 [16640/60000 (28%)]\tLoss: 0.185438\n",
      "Train Epoch: 3 [17280/60000 (29%)]\tLoss: 0.279707\n",
      "Train Epoch: 3 [17920/60000 (30%)]\tLoss: 0.278606\n",
      "Train Epoch: 3 [18560/60000 (31%)]\tLoss: 0.167486\n",
      "Train Epoch: 3 [19200/60000 (32%)]\tLoss: 0.128865\n",
      "Train Epoch: 3 [19840/60000 (33%)]\tLoss: 0.176033\n",
      "Train Epoch: 3 [20480/60000 (34%)]\tLoss: 0.165635\n",
      "Train Epoch: 3 [21120/60000 (35%)]\tLoss: 0.192326\n",
      "Train Epoch: 3 [21760/60000 (36%)]\tLoss: 0.244315\n",
      "Train Epoch: 3 [22400/60000 (37%)]\tLoss: 0.427045\n",
      "Train Epoch: 3 [23040/60000 (38%)]\tLoss: 0.262971\n",
      "Train Epoch: 3 [23680/60000 (39%)]\tLoss: 0.117443\n",
      "Train Epoch: 3 [24320/60000 (41%)]\tLoss: 0.159055\n",
      "Train Epoch: 3 [24960/60000 (42%)]\tLoss: 0.152721\n",
      "Train Epoch: 3 [25600/60000 (43%)]\tLoss: 0.210597\n",
      "Train Epoch: 3 [26240/60000 (44%)]\tLoss: 0.280594\n",
      "Train Epoch: 3 [26880/60000 (45%)]\tLoss: 0.105074\n",
      "Train Epoch: 3 [27520/60000 (46%)]\tLoss: 0.182991\n",
      "Train Epoch: 3 [28160/60000 (47%)]\tLoss: 0.100581\n",
      "Train Epoch: 3 [28800/60000 (48%)]\tLoss: 0.333280\n",
      "Train Epoch: 3 [29440/60000 (49%)]\tLoss: 0.267235\n",
      "Train Epoch: 3 [30080/60000 (50%)]\tLoss: 0.287155\n",
      "Train Epoch: 3 [30720/60000 (51%)]\tLoss: 0.211763\n",
      "Train Epoch: 3 [31360/60000 (52%)]\tLoss: 0.167669\n",
      "Train Epoch: 3 [32000/60000 (53%)]\tLoss: 0.335345\n",
      "Train Epoch: 3 [32640/60000 (54%)]\tLoss: 0.230824\n",
      "Train Epoch: 3 [33280/60000 (55%)]\tLoss: 0.246407\n",
      "Train Epoch: 3 [33920/60000 (57%)]\tLoss: 0.164762\n",
      "Train Epoch: 3 [34560/60000 (58%)]\tLoss: 0.231079\n",
      "Train Epoch: 3 [35200/60000 (59%)]\tLoss: 0.157059\n",
      "Train Epoch: 3 [35840/60000 (60%)]\tLoss: 0.185059\n",
      "Train Epoch: 3 [36480/60000 (61%)]\tLoss: 0.156351\n",
      "Train Epoch: 3 [37120/60000 (62%)]\tLoss: 0.247051\n",
      "Train Epoch: 3 [37760/60000 (63%)]\tLoss: 0.205658\n",
      "Train Epoch: 3 [38400/60000 (64%)]\tLoss: 0.163189\n",
      "Train Epoch: 3 [39040/60000 (65%)]\tLoss: 0.227513\n",
      "Train Epoch: 3 [39680/60000 (66%)]\tLoss: 0.161265\n",
      "Train Epoch: 3 [40320/60000 (67%)]\tLoss: 0.274414\n",
      "Train Epoch: 3 [40960/60000 (68%)]\tLoss: 0.260322\n",
      "Train Epoch: 3 [41600/60000 (69%)]\tLoss: 0.158836\n",
      "Train Epoch: 3 [42240/60000 (70%)]\tLoss: 0.175276\n",
      "Train Epoch: 3 [42880/60000 (71%)]\tLoss: 0.150992\n",
      "Train Epoch: 3 [43520/60000 (72%)]\tLoss: 0.311028\n",
      "Train Epoch: 3 [44160/60000 (74%)]\tLoss: 0.170410\n",
      "Train Epoch: 3 [44800/60000 (75%)]\tLoss: 0.128653\n",
      "Train Epoch: 3 [45440/60000 (76%)]\tLoss: 0.226418\n",
      "Train Epoch: 3 [46080/60000 (77%)]\tLoss: 0.062593\n",
      "Train Epoch: 3 [46720/60000 (78%)]\tLoss: 0.196347\n",
      "Train Epoch: 3 [47360/60000 (79%)]\tLoss: 0.275091\n",
      "Train Epoch: 3 [48000/60000 (80%)]\tLoss: 0.233807\n",
      "Train Epoch: 3 [48640/60000 (81%)]\tLoss: 0.237730\n",
      "Train Epoch: 3 [49280/60000 (82%)]\tLoss: 0.097647\n",
      "Train Epoch: 3 [49920/60000 (83%)]\tLoss: 0.289066\n",
      "Train Epoch: 3 [50560/60000 (84%)]\tLoss: 0.150444\n",
      "Train Epoch: 3 [51200/60000 (85%)]\tLoss: 0.201813\n",
      "Train Epoch: 3 [51840/60000 (86%)]\tLoss: 0.170295\n",
      "Train Epoch: 3 [52480/60000 (87%)]\tLoss: 0.112938\n",
      "Train Epoch: 3 [53120/60000 (88%)]\tLoss: 0.146654\n",
      "Train Epoch: 3 [53760/60000 (90%)]\tLoss: 0.204168\n",
      "Train Epoch: 3 [54400/60000 (91%)]\tLoss: 0.103870\n",
      "Train Epoch: 3 [55040/60000 (92%)]\tLoss: 0.331836\n",
      "Train Epoch: 3 [55680/60000 (93%)]\tLoss: 0.193330\n",
      "Train Epoch: 3 [56320/60000 (94%)]\tLoss: 0.157070\n",
      "Train Epoch: 3 [56960/60000 (95%)]\tLoss: 0.193865\n",
      "Train Epoch: 3 [57600/60000 (96%)]\tLoss: 0.104168\n",
      "Train Epoch: 3 [58240/60000 (97%)]\tLoss: 0.289882\n",
      "Train Epoch: 3 [58880/60000 (98%)]\tLoss: 0.086988\n",
      "Train Epoch: 3 [59520/60000 (99%)]\tLoss: 0.153498\n",
      "\n",
      "Test set: Avg. loss: 0.0726, Accuracy: 9775/10000 (98%)\n",
      "\n",
      "Train Epoch: 4 [0/60000 (0%)]\tLoss: 0.159325\n",
      "Train Epoch: 4 [640/60000 (1%)]\tLoss: 0.123643\n",
      "Train Epoch: 4 [1280/60000 (2%)]\tLoss: 0.347346\n",
      "Train Epoch: 4 [1920/60000 (3%)]\tLoss: 0.095223\n",
      "Train Epoch: 4 [2560/60000 (4%)]\tLoss: 0.185098\n",
      "Train Epoch: 4 [3200/60000 (5%)]\tLoss: 0.157931\n",
      "Train Epoch: 4 [3840/60000 (6%)]\tLoss: 0.330506\n",
      "Train Epoch: 4 [4480/60000 (7%)]\tLoss: 0.084433\n",
      "Train Epoch: 4 [5120/60000 (9%)]\tLoss: 0.217162\n",
      "Train Epoch: 4 [5760/60000 (10%)]\tLoss: 0.170723\n",
      "Train Epoch: 4 [6400/60000 (11%)]\tLoss: 0.431542\n",
      "Train Epoch: 4 [7040/60000 (12%)]\tLoss: 0.080955\n",
      "Train Epoch: 4 [7680/60000 (13%)]\tLoss: 0.240433\n",
      "Train Epoch: 4 [8320/60000 (14%)]\tLoss: 0.134481\n",
      "Train Epoch: 4 [8960/60000 (15%)]\tLoss: 0.207900\n",
      "Train Epoch: 4 [9600/60000 (16%)]\tLoss: 0.172065\n",
      "Train Epoch: 4 [10240/60000 (17%)]\tLoss: 0.147453\n",
      "Train Epoch: 4 [10880/60000 (18%)]\tLoss: 0.275192\n",
      "Train Epoch: 4 [11520/60000 (19%)]\tLoss: 0.225006\n",
      "Train Epoch: 4 [12160/60000 (20%)]\tLoss: 0.148171\n",
      "Train Epoch: 4 [12800/60000 (21%)]\tLoss: 0.308449\n",
      "Train Epoch: 4 [13440/60000 (22%)]\tLoss: 0.271722\n",
      "Train Epoch: 4 [14080/60000 (23%)]\tLoss: 0.210079\n",
      "Train Epoch: 4 [14720/60000 (25%)]\tLoss: 0.196265\n",
      "Train Epoch: 4 [15360/60000 (26%)]\tLoss: 0.165866\n",
      "Train Epoch: 4 [16000/60000 (27%)]\tLoss: 0.096226\n",
      "Train Epoch: 4 [16640/60000 (28%)]\tLoss: 0.153643\n",
      "Train Epoch: 4 [17280/60000 (29%)]\tLoss: 0.105372\n",
      "Train Epoch: 4 [17920/60000 (30%)]\tLoss: 0.211341\n",
      "Train Epoch: 4 [18560/60000 (31%)]\tLoss: 0.266568\n",
      "Train Epoch: 4 [19200/60000 (32%)]\tLoss: 0.280480\n",
      "Train Epoch: 4 [19840/60000 (33%)]\tLoss: 0.114021\n",
      "Train Epoch: 4 [20480/60000 (34%)]\tLoss: 0.172748\n",
      "Train Epoch: 4 [21120/60000 (35%)]\tLoss: 0.197308\n",
      "Train Epoch: 4 [21760/60000 (36%)]\tLoss: 0.247188\n",
      "Train Epoch: 4 [22400/60000 (37%)]\tLoss: 0.174269\n",
      "Train Epoch: 4 [23040/60000 (38%)]\tLoss: 0.103315\n",
      "Train Epoch: 4 [23680/60000 (39%)]\tLoss: 0.225730\n",
      "Train Epoch: 4 [24320/60000 (41%)]\tLoss: 0.384633\n",
      "Train Epoch: 4 [24960/60000 (42%)]\tLoss: 0.061123\n",
      "Train Epoch: 4 [25600/60000 (43%)]\tLoss: 0.140492\n",
      "Train Epoch: 4 [26240/60000 (44%)]\tLoss: 0.145779\n",
      "Train Epoch: 4 [26880/60000 (45%)]\tLoss: 0.173820\n",
      "Train Epoch: 4 [27520/60000 (46%)]\tLoss: 0.281964\n",
      "Train Epoch: 4 [28160/60000 (47%)]\tLoss: 0.106990\n",
      "Train Epoch: 4 [28800/60000 (48%)]\tLoss: 0.371724\n",
      "Train Epoch: 4 [29440/60000 (49%)]\tLoss: 0.092903\n",
      "Train Epoch: 4 [30080/60000 (50%)]\tLoss: 0.086305\n",
      "Train Epoch: 4 [30720/60000 (51%)]\tLoss: 0.299489\n",
      "Train Epoch: 4 [31360/60000 (52%)]\tLoss: 0.131216\n",
      "Train Epoch: 4 [32000/60000 (53%)]\tLoss: 0.275690\n",
      "Train Epoch: 4 [32640/60000 (54%)]\tLoss: 0.193110\n",
      "Train Epoch: 4 [33280/60000 (55%)]\tLoss: 0.159226\n",
      "Train Epoch: 4 [33920/60000 (57%)]\tLoss: 0.093223\n",
      "Train Epoch: 4 [34560/60000 (58%)]\tLoss: 0.163950\n",
      "Train Epoch: 4 [35200/60000 (59%)]\tLoss: 0.333474\n",
      "Train Epoch: 4 [35840/60000 (60%)]\tLoss: 0.232084\n",
      "Train Epoch: 4 [36480/60000 (61%)]\tLoss: 0.303027\n",
      "Train Epoch: 4 [37120/60000 (62%)]\tLoss: 0.087229\n",
      "Train Epoch: 4 [37760/60000 (63%)]\tLoss: 0.190146\n",
      "Train Epoch: 4 [38400/60000 (64%)]\tLoss: 0.197777\n",
      "Train Epoch: 4 [39040/60000 (65%)]\tLoss: 0.194253\n",
      "Train Epoch: 4 [39680/60000 (66%)]\tLoss: 0.144700\n",
      "Train Epoch: 4 [40320/60000 (67%)]\tLoss: 0.239756\n",
      "Train Epoch: 4 [40960/60000 (68%)]\tLoss: 0.138069\n",
      "Train Epoch: 4 [41600/60000 (69%)]\tLoss: 0.133749\n",
      "Train Epoch: 4 [42240/60000 (70%)]\tLoss: 0.094617\n",
      "Train Epoch: 4 [42880/60000 (71%)]\tLoss: 0.122625\n",
      "Train Epoch: 4 [43520/60000 (72%)]\tLoss: 0.166778\n",
      "Train Epoch: 4 [44160/60000 (74%)]\tLoss: 0.121317\n",
      "Train Epoch: 4 [44800/60000 (75%)]\tLoss: 0.099172\n",
      "Train Epoch: 4 [45440/60000 (76%)]\tLoss: 0.113489\n",
      "Train Epoch: 4 [46080/60000 (77%)]\tLoss: 0.269917\n",
      "Train Epoch: 4 [46720/60000 (78%)]\tLoss: 0.103748\n",
      "Train Epoch: 4 [47360/60000 (79%)]\tLoss: 0.204003\n",
      "Train Epoch: 4 [48000/60000 (80%)]\tLoss: 0.464198\n",
      "Train Epoch: 4 [48640/60000 (81%)]\tLoss: 0.063515\n",
      "Train Epoch: 4 [49280/60000 (82%)]\tLoss: 0.175574\n",
      "Train Epoch: 4 [49920/60000 (83%)]\tLoss: 0.153082\n",
      "Train Epoch: 4 [50560/60000 (84%)]\tLoss: 0.360228\n",
      "Train Epoch: 4 [51200/60000 (85%)]\tLoss: 0.160041\n",
      "Train Epoch: 4 [51840/60000 (86%)]\tLoss: 0.171871\n",
      "Train Epoch: 4 [52480/60000 (87%)]\tLoss: 0.423319\n",
      "Train Epoch: 4 [53120/60000 (88%)]\tLoss: 0.149415\n",
      "Train Epoch: 4 [53760/60000 (90%)]\tLoss: 0.178983\n",
      "Train Epoch: 4 [54400/60000 (91%)]\tLoss: 0.109434\n",
      "Train Epoch: 4 [55040/60000 (92%)]\tLoss: 0.391106\n",
      "Train Epoch: 4 [55680/60000 (93%)]\tLoss: 0.113658\n",
      "Train Epoch: 4 [56320/60000 (94%)]\tLoss: 0.115127\n",
      "Train Epoch: 4 [56960/60000 (95%)]\tLoss: 0.126354\n",
      "Train Epoch: 4 [57600/60000 (96%)]\tLoss: 0.105000\n",
      "Train Epoch: 4 [58240/60000 (97%)]\tLoss: 0.038694\n",
      "Train Epoch: 4 [58880/60000 (98%)]\tLoss: 0.164458\n",
      "Train Epoch: 4 [59520/60000 (99%)]\tLoss: 0.155136\n",
      "\n",
      "Test set: Avg. loss: 0.0618, Accuracy: 9806/10000 (98%)\n",
      "\n",
      "Train Epoch: 5 [0/60000 (0%)]\tLoss: 0.266875\n",
      "Train Epoch: 5 [640/60000 (1%)]\tLoss: 0.119752\n",
      "Train Epoch: 5 [1280/60000 (2%)]\tLoss: 0.189272\n",
      "Train Epoch: 5 [1920/60000 (3%)]\tLoss: 0.075790\n",
      "Train Epoch: 5 [2560/60000 (4%)]\tLoss: 0.107015\n",
      "Train Epoch: 5 [3200/60000 (5%)]\tLoss: 0.133579\n",
      "Train Epoch: 5 [3840/60000 (6%)]\tLoss: 0.069134\n",
      "Train Epoch: 5 [4480/60000 (7%)]\tLoss: 0.178240\n",
      "Train Epoch: 5 [5120/60000 (9%)]\tLoss: 0.077401\n",
      "Train Epoch: 5 [5760/60000 (10%)]\tLoss: 0.229772\n",
      "Train Epoch: 5 [6400/60000 (11%)]\tLoss: 0.160999\n",
      "Train Epoch: 5 [7040/60000 (12%)]\tLoss: 0.216881\n",
      "Train Epoch: 5 [7680/60000 (13%)]\tLoss: 0.098555\n",
      "Train Epoch: 5 [8320/60000 (14%)]\tLoss: 0.102445\n",
      "Train Epoch: 5 [8960/60000 (15%)]\tLoss: 0.190964\n",
      "Train Epoch: 5 [9600/60000 (16%)]\tLoss: 0.290213\n",
      "Train Epoch: 5 [10240/60000 (17%)]\tLoss: 0.180265\n",
      "Train Epoch: 5 [10880/60000 (18%)]\tLoss: 0.149194\n",
      "Train Epoch: 5 [11520/60000 (19%)]\tLoss: 0.062384\n",
      "Train Epoch: 5 [12160/60000 (20%)]\tLoss: 0.104536\n",
      "Train Epoch: 5 [12800/60000 (21%)]\tLoss: 0.144286\n",
      "Train Epoch: 5 [13440/60000 (22%)]\tLoss: 0.128801\n",
      "Train Epoch: 5 [14080/60000 (23%)]\tLoss: 0.178330\n",
      "Train Epoch: 5 [14720/60000 (25%)]\tLoss: 0.265436\n",
      "Train Epoch: 5 [15360/60000 (26%)]\tLoss: 0.277345\n",
      "Train Epoch: 5 [16000/60000 (27%)]\tLoss: 0.311671\n",
      "Train Epoch: 5 [16640/60000 (28%)]\tLoss: 0.158723\n",
      "Train Epoch: 5 [17280/60000 (29%)]\tLoss: 0.157030\n",
      "Train Epoch: 5 [17920/60000 (30%)]\tLoss: 0.286028\n",
      "Train Epoch: 5 [18560/60000 (31%)]\tLoss: 0.187096\n",
      "Train Epoch: 5 [19200/60000 (32%)]\tLoss: 0.075465\n",
      "Train Epoch: 5 [19840/60000 (33%)]\tLoss: 0.111579\n",
      "Train Epoch: 5 [20480/60000 (34%)]\tLoss: 0.151998\n",
      "Train Epoch: 5 [21120/60000 (35%)]\tLoss: 0.048936\n",
      "Train Epoch: 5 [21760/60000 (36%)]\tLoss: 0.149372\n",
      "Train Epoch: 5 [22400/60000 (37%)]\tLoss: 0.333297\n",
      "Train Epoch: 5 [23040/60000 (38%)]\tLoss: 0.149683\n",
      "Train Epoch: 5 [23680/60000 (39%)]\tLoss: 0.107160\n",
      "Train Epoch: 5 [24320/60000 (41%)]\tLoss: 0.095707\n",
      "Train Epoch: 5 [24960/60000 (42%)]\tLoss: 0.096846\n",
      "Train Epoch: 5 [25600/60000 (43%)]\tLoss: 0.285695\n",
      "Train Epoch: 5 [26240/60000 (44%)]\tLoss: 0.152730\n",
      "Train Epoch: 5 [26880/60000 (45%)]\tLoss: 0.153595\n",
      "Train Epoch: 5 [27520/60000 (46%)]\tLoss: 0.135404\n",
      "Train Epoch: 5 [28160/60000 (47%)]\tLoss: 0.167007\n",
      "Train Epoch: 5 [28800/60000 (48%)]\tLoss: 0.142355\n",
      "Train Epoch: 5 [29440/60000 (49%)]\tLoss: 0.274486\n",
      "Train Epoch: 5 [30080/60000 (50%)]\tLoss: 0.134425\n",
      "Train Epoch: 5 [30720/60000 (51%)]\tLoss: 0.141249\n",
      "Train Epoch: 5 [31360/60000 (52%)]\tLoss: 0.179290\n",
      "Train Epoch: 5 [32000/60000 (53%)]\tLoss: 0.089156\n",
      "Train Epoch: 5 [32640/60000 (54%)]\tLoss: 0.205889\n",
      "Train Epoch: 5 [33280/60000 (55%)]\tLoss: 0.087635\n",
      "Train Epoch: 5 [33920/60000 (57%)]\tLoss: 0.131146\n",
      "Train Epoch: 5 [34560/60000 (58%)]\tLoss: 0.117926\n",
      "Train Epoch: 5 [35200/60000 (59%)]\tLoss: 0.173203\n",
      "Train Epoch: 5 [35840/60000 (60%)]\tLoss: 0.209341\n",
      "Train Epoch: 5 [36480/60000 (61%)]\tLoss: 0.217645\n",
      "Train Epoch: 5 [37120/60000 (62%)]\tLoss: 0.164497\n",
      "Train Epoch: 5 [37760/60000 (63%)]\tLoss: 0.203020\n",
      "Train Epoch: 5 [38400/60000 (64%)]\tLoss: 0.048232\n",
      "Train Epoch: 5 [39040/60000 (65%)]\tLoss: 0.067111\n",
      "Train Epoch: 5 [39680/60000 (66%)]\tLoss: 0.142514\n",
      "Train Epoch: 5 [40320/60000 (67%)]\tLoss: 0.277221\n",
      "Train Epoch: 5 [40960/60000 (68%)]\tLoss: 0.313407\n",
      "Train Epoch: 5 [41600/60000 (69%)]\tLoss: 0.168561\n",
      "Train Epoch: 5 [42240/60000 (70%)]\tLoss: 0.244570\n",
      "Train Epoch: 5 [42880/60000 (71%)]\tLoss: 0.136979\n",
      "Train Epoch: 5 [43520/60000 (72%)]\tLoss: 0.186466\n",
      "Train Epoch: 5 [44160/60000 (74%)]\tLoss: 0.240534\n",
      "Train Epoch: 5 [44800/60000 (75%)]\tLoss: 0.134366\n",
      "Train Epoch: 5 [45440/60000 (76%)]\tLoss: 0.146837\n",
      "Train Epoch: 5 [46080/60000 (77%)]\tLoss: 0.162195\n",
      "Train Epoch: 5 [46720/60000 (78%)]\tLoss: 0.182995\n",
      "Train Epoch: 5 [47360/60000 (79%)]\tLoss: 0.198298\n",
      "Train Epoch: 5 [48000/60000 (80%)]\tLoss: 0.116179\n",
      "Train Epoch: 5 [48640/60000 (81%)]\tLoss: 0.115323\n",
      "Train Epoch: 5 [49280/60000 (82%)]\tLoss: 0.246283\n",
      "Train Epoch: 5 [49920/60000 (83%)]\tLoss: 0.261398\n",
      "Train Epoch: 5 [50560/60000 (84%)]\tLoss: 0.090494\n",
      "Train Epoch: 5 [51200/60000 (85%)]\tLoss: 0.188580\n",
      "Train Epoch: 5 [51840/60000 (86%)]\tLoss: 0.050364\n",
      "Train Epoch: 5 [52480/60000 (87%)]\tLoss: 0.083171\n",
      "Train Epoch: 5 [53120/60000 (88%)]\tLoss: 0.132251\n",
      "Train Epoch: 5 [53760/60000 (90%)]\tLoss: 0.058181\n",
      "Train Epoch: 5 [54400/60000 (91%)]\tLoss: 0.119421\n",
      "Train Epoch: 5 [55040/60000 (92%)]\tLoss: 0.161150\n",
      "Train Epoch: 5 [55680/60000 (93%)]\tLoss: 0.208514\n",
      "Train Epoch: 5 [56320/60000 (94%)]\tLoss: 0.230706\n",
      "Train Epoch: 5 [56960/60000 (95%)]\tLoss: 0.132032\n",
      "Train Epoch: 5 [57600/60000 (96%)]\tLoss: 0.120629\n",
      "Train Epoch: 5 [58240/60000 (97%)]\tLoss: 0.086857\n",
      "Train Epoch: 5 [58880/60000 (98%)]\tLoss: 0.179527\n",
      "Train Epoch: 5 [59520/60000 (99%)]\tLoss: 0.089433\n",
      "\n",
      "Test set: Avg. loss: 0.0583, Accuracy: 9825/10000 (98%)\n",
      "\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "Text(0.5, 1.0, 'add Epoch')"
      ]
     },
     "execution_count": 34,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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yX7vI96/X79+Urp0acmTJ4+0bt1a1q1b57fO3r17pVu3bqq4VuHCheXOO++Uw4cP+62zcuVKufjii9Vxo+roq6++mq4tn3/+ufpesE6dOnXku+++C7kt8e6v2267Ld25duWVV6Zcfw0aNEguuOACVcUdv5fOnTvL2rVr/dZJpN+dm7bEs69atWqV7ry67777Uq6vwHvvvSd169b1FfRr3ry5fP/995K05xWyrkjGGDdunCdnzpyeDz/80LN69WrP3Xff7SlcuLBn586dnmShf//+nlq1anm2b9/ue+zevdv3/n333ecpX768Z8aMGZ6lS5d6mjVr5mnRooXv/dOnT3tq167tad26tWfFihWe7777zlOsWDFP3759fets3LjRkzdvXs8jjzzi+f333z1vv/22J1u2bJ6pU6cmdF/jWP73v/95Jk6ciAxGz6RJk/zef/nllz2FChXyTJ482fPrr796Onbs6KlcubLn2LFjvnWuvPJKT7169TyLFi3y/PTTT55q1ap5br75Zt/7Bw4c8JQsWdLTrVs3z6pVqzyfffaZJ0+ePJ4RI0b41pk/f77qr1dffVX13zPPPOPJkSOH57fffgupLfHurx49eqj+MM+1vXv3+q2TCv3Vtm1bz+jRo1X7f/nlF89VV13lqVChgufw4cMJ+bsL1pZ491XLli1Vu83zCudJqvUVmDJliufbb7/1/Pnnn561a9d6nn76aXXuo/+S8byi0IkATZo08TzwwAO+12fOnPGUKVPGM2jQIE8yCR0MLHbs379f/Ug+//xz37I//vhDDWILFy5Ur/FDyJo1q2fHjh2+dd577z1PwYIFPSdOnFCvn3jiCSWmTLp06aIuYpmlr60D99mzZz2lSpXyvPbaa379lStXLjX4AlwE8Lmff/7Zt87333/vyZIli2fbtm3q9bvvvuspUqSIr6/Ak08+6alRo4bv9Y033uhp3769X3uaNm3quffee123JdY4CZ1OnTo5fiZV+2vXrl3quOfMmZNwvzs3bYlnX2mh07t3b8fPpGpfafB7GTVqVFKeV3RdZZCTJ0/KsmXLlEnbnE8LrxcuXCjJBEz2cDdUqVJFuQ1gugQ4/lOnTvn1AdwBFSpU8PUB/sM1ULJkSd86bdu2VZO/rV692reOuQ29jt5GZuzrTZs2yY4dO/zajLlaYKI1+wbul8aNG/vWwfo4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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "n_epochs = 5\n",
    "batch_size_train = 64\n",
    "batch_size_test = 1000\n",
    "learning_rate = 0.01\n",
    "momentum = 0.5\n",
    "log_interval = 10\n",
    "random_seed = 1\n",
    "torch.backends.cudnn.enabled = False\n",
    "torch.manual_seed(random_seed)\n",
    "\n",
    "train_loader = torch.utils.data.DataLoader(\n",
    "  torchvision.datasets.MNIST('/files/', train=True, download=True,\n",
    "                             transform=torchvision.transforms.Compose([\n",
    "                               torchvision.transforms.ToTensor(),\n",
    "                               torchvision.transforms.Normalize(\n",
    "                                 (0.1307,), (0.3081,))\n",
    "                             ])),\n",
    "  batch_size=batch_size_train, shuffle=True)\n",
    "test_loader = torch.utils.data.DataLoader(\n",
    "  torchvision.datasets.MNIST('/files/', train=False, download=True,\n",
    "                             transform=torchvision.transforms.Compose([\n",
    "                               torchvision.transforms.ToTensor(),\n",
    "                               torchvision.transforms.Normalize(\n",
    "                                 (0.1307,), (0.3081,))\n",
    "                             ])),\n",
    "  batch_size=batch_size_test, shuffle=True)\n",
    "\n",
    "examples = enumerate(test_loader)\n",
    "batch_idx, (example_data, example_targets) = next(examples)\n",
    "\n",
    "class Net(nn.Module):\n",
    "    def __init__(self):\n",
    "        super(Net, self).__init__()\n",
    "        self.conv1 = nn.Conv2d(1, 10, kernel_size=5)\n",
    "        self.conv2 = nn.Conv2d(10, 20, kernel_size=5)\n",
    "        self.conv2_drop = nn.Dropout2d()\n",
    "        self.fc1 = nn.Linear(320, 50)\n",
    "        self.fc2 = nn.Linear(50, 10)\n",
    "\n",
    "    def forward(self, x):\n",
    "        x = F.relu(F.max_pool2d(self.conv1(x), 2))\n",
    "        x = F.relu(F.max_pool2d(self.conv2(x), 2))\n",
    "        x = x.view(-1, 320)\n",
    "        x = F.relu(self.fc1(x))\n",
    "        x = F.dropout(x, training=self.training)\n",
    "        x = self.fc2(x)\n",
    "        return F.log_softmax(x, dim=1)\n",
    "    \n",
    "network = Net()\n",
    "optimizer = optim.SGD(network.parameters(), lr=learning_rate,\n",
    "                      momentum=momentum)\n",
    "\n",
    "train_losses = []\n",
    "train_counter = []\n",
    "test_losses = []\n",
    "test_counter = [i*len(train_loader.dataset) for i in range(n_epochs + 1)]\n",
    "\n",
    "def train(epoch):\n",
    "  network.train()\n",
    "  for batch_idx, (data, target) in enumerate(train_loader):\n",
    "    optimizer.zero_grad()\n",
    "    output = network(data)\n",
    "    loss = F.nll_loss(output, target)\n",
    "    loss.backward()\n",
    "    optimizer.step()\n",
    "    if batch_idx % log_interval == 0:\n",
    "      print('Train Epoch: {} [{}/{} ({:.0f}%)]\\tLoss: {:.6f}'.format(\n",
    "        epoch, batch_idx * len(data), len(train_loader.dataset),\n",
    "        100. * batch_idx / len(train_loader), loss.item()))\n",
    "      train_losses.append(loss.item())\n",
    "      train_counter.append(\n",
    "        (batch_idx*64) + ((epoch-1)*len(train_loader.dataset)))\n",
    "      torch.save(network.state_dict(), '/homework/model.pth')\n",
    "      torch.save(optimizer.state_dict(), '/homework/optimizer.pth')\n",
    "\n",
    "def test():\n",
    "  network.eval()\n",
    "  test_loss = 0\n",
    "  correct = 0\n",
    "  with torch.no_grad():\n",
    "    for data, target in test_loader:\n",
    "      output = network(data)\n",
    "      test_loss += F.nll_loss(output, target, size_average=False).item()\n",
    "      pred = output.data.max(1, keepdim=True)[1]\n",
    "      correct += pred.eq(target.data.view_as(pred)).sum()\n",
    "  test_loss /= len(test_loader.dataset)\n",
    "  test_losses.append(test_loss)\n",
    "  print('\\nTest set: Avg. loss: {:.4f}, Accuracy: {}/{} ({:.0f}%)\\n'.format(\n",
    "    test_loss, correct, len(test_loader.dataset),\n",
    "    100. * correct / len(test_loader.dataset)))\n",
    "  \n",
    "test()\n",
    "for epoch in range(1, n_epochs + 1):\n",
    "  train(epoch)\n",
    "  test()\n",
    "\n",
    "fig = plt.figure()\n",
    "plt.plot(train_counter, train_losses, color='blue')\n",
    "plt.scatter(test_counter, test_losses, color='red')\n",
    "plt.legend(['Train Loss', 'Test Loss'], loc='upper right')\n",
    "plt.xlabel('number of training examples seen')\n",
    "plt.ylabel('negative log likelihood loss')\n",
    "plt.title(\"add Epoch\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "pytorch",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.11.11"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
